Postman+Newman+Jenkins 接口自动化测试持续集成
今天得知postman将彻底变成一个基于云端的工具,涉及到安全原因以后大概率不能在项目中使用了,所以今天把很久以前总结的接口自动化流程发出来。虽然postman不再使用,但持续集成自动化的基本逻辑和原理还是不变的,变得只是一个工具。
引入
- 什么是接口?
接口是软件提供给外部的一种服务,用于做数据传输。 - 接口测试的本质?
就是测试接口能否正常的交互数据、控制管理。 - 接口测试的重点
正确接受合法request入参,正确拒绝非法request入参,保证接口的正确性和健壮性。
在接下来的接口自动化中,我们使用Postman这个非常流行的工具,下面是Postman的UI操作界面:
Postman应用
变量
- 全局变量对postman所有接口都生效
- 环境变量只有设置为该环境下,才生效
- 集合变量在collection中生效
- 优先级:环境变量>集合变量>全局变量
使用pm.environment.set(“variable_key”, “variable_value”);、pm.environment.get(“variable_key”);来get/set环境变量
批量运行测试用例
断言
assertion | code |
---|---|
断言返回结果的响应码 | pm.test(“Status code is 200”,function(){pm.response.to.have.status(200); }); |
断言返回结果包含一个指定的字符串 | pm.test(“Body matches string”, function () {pm.expect(pm.response.text()).to.include(“tags”);}); |
对返回的结果作json字段检查 | pm.test(“Your test name”, function () {var jsonData = pm.response.json();pm.expect(jsonData.tags[1].id).to.eql(5298);}); |
断言返回的结果等于一个字符串 | pm.test(“Body is correct”, function () {pm.response.to.have.bod(“response_body_string”);}); |
断言响应头中包含指定的响应头 | pm.test(“Content-Type is present”, function () {pm.response.to.have.header(“Content-Type”);}); |
断言请求接口的时间少于200ms</ |