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

测试的好处

每一个人都赞成测试很重要,但并非全部人都会去作。每当你添加新的代码,测试能够保证你的api按照预期运行。经过postman,你能够为全部api编写和运行测试脚本。html

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,表示测试经过,不然测试失败。web

pm.expect()

这个断言函数是基于一个JavaScript测试库ChaiJS BDD构建的。经过相似的语法,你能够很方便的对响应里的数据或者一些变量进行断言。npm

pm.response.to.be.*

这个对象能够提供对响应常见的检查。如状态码是否符合预期等。json

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


经常使用api详情请查看https://learning.getpostman.com/docs/postman/scripts/postman_sandbox_api_referencebash

运行测试

咱们一般会给多个api运行测试,由于咱们有不少api,或者一个测试场景由多个api所组成。因此咱们会把他们添加到一个集合(Collections)当中来运行。app

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调试工具。熟练的掌握它,也能必定程度地提升咱们的工做效率。

相关文章
相关标签/搜索