基于postman的api自动化测试实践

发表于:2019-3-01 10:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈续渊    来源:掘金

  测试的好处
  每个人都同意测试很重要,但并不是所有人都会去做。每当你添加新的代码,测试可以保证你的api按照预期运行。通过postman,你可以为所有api编写和运行测试脚本。
  postman中的测试
  在postman中,你可以通过添加脚本到请求当中,来使用动态变量、在请求之间传递数据以及编写测试。写在Pre-request Scripttab中的代码会在请求发送之前执行,而写在Teststab中的代码会在响应到达之后执行。
  测试用的语言是JavaScript。所以对于前端开发者来说几乎没有学习成本。对于一个单独的请求来说,如果它有测试脚本,那么在请求发送之后,在Test Resultstab可以看到对应的测试结果。另外为了可以快速编写测试脚本,postman提供了一些通用的代码片段(code snippets)。如下是对应的功能结构图:
  编写测试
  例子:
   pm.test("response is ok", function () {
  pm.response.to.have.status(200);
  });
  pm.test("environment to be production", function () {
  pm.expect(pm.environment.get("env")).to.equal("production");
  });
  pm.test("response must be valid and have a body", function () {
  pm.response.to.be.ok;
  pm.response.to.be.withBody;
  pm.response.to.be.json;
  });
  var schema = {
  type: 'object',
  properties: {
  appID: {
  type: 'number',
  },
  avatar: {
  type: 'string',
  }
  }
  }
  pm.test('Schema is valid', function() {
  var jsonData = pm.response.json().data;
  pm.expect(tv4.validate(jsonData, schema)).to.be.true;
  });
  pm.test()
  为了遵循postman的规范,所有测试代码必须写在pm.test()的function里面。第一个参数是该测试的名称,第二个参数是一个返回boolean值的函数。也就是说这个函数如果返回true,表示测试通过,否则测试失败。
  pm.expect()
  这个断言函数是基于一个JavaScript测试库ChaiJS BDD构建的。通过类似的语法,你可以很方便的对响应里的数据或者一些变量进行断言。
  pm.response.to.be.*
  这个对象可以提供对响应常见的检查。如状态码是否符合预期等。
  tv4.validate()
  第一个参数是被检验的数据,第二个参数是json schema。通过则返回true,失败则返回false。如果要快速学习json的schema规范,可以参考https://www.jianshu.com/p/8278eb2458c4?winzoom=1
  tv4是postman一个内置的json validator。它基于json-schema draft v4,通过丰富的校验语法来校验简单的值或者复杂的json对象。
  常用api详情请查看https://learning.getpostman.com/docs/postman/scripts/postman_sandbox_api_reference
  运行测试
  我们通常会给多个api运行测试,因为我们有很多api,或者一个测试场景由多个api所组成。所以我们会把他们添加到一个集合(Collections)当中来运行。
  postman(用户界面)



  这里注意,请求是按照Collections当中的顺序线性执行。如果想改变执行顺序,可以修改Collections中的顺序,或者使用postman.setNextRequest("request_name");如果想要停止整个流程,可以执行postman.setNextRequest(null);
  newman(命令行工具)
  1.从postman当中导出为json格式的Collections
  2.全局安装newman,npm install -g newman
  3.执行命令,newman run sample-collection.json
  详细使用方法请查看,newman
  结合Jenkins自动化
  一个通用的方案是在代码在提交后,或者合入仓库分支后,执行
  newman -c jenkins_demo.postman_collection --exitCode 1。注意到--exitCode参数,这是为了告诉Jenkins,如果测试失败,将会返回值为1的退出码。这样就Jenkins就可以得知测试运行的成功与否了。
  总结
  我们都知道,工欲善其事必先利其器。对于基于api的测试而言,postman不失为一个不错的工具。另外对于web开发人员来说,postman也是一个常用的http调试工具。熟练的掌握它,也能一定程度地提高我们的工作效率。
  
      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号