基于postman的api自动化测试实践
测试的好处
每个人都同意测试很重要,但并不是所有人都会去做。每当你添加新的代码,测试可以保证你的api按照预期运行。通过postman,你可以为所有api编写和运行测试脚本。
postman中的测试
在postman中,你可以通过添加脚本到请求当中,来使用动态变量、在请求之间传递数据以及编写测试。写在Pre-request Script
tab中的代码会在请求发送之前执行,而写在Tests
tab中的代码会在响应到达之后执行。
测试用的语言是JavaScript。所以对于前端开发者来说几乎没有学习成本。对于一个单独的请求来说,如果它有测试脚本,那么在请求发送之后,在Test Results
tab可以看到对应的测试结果。另外为了可以快速编写测试脚本,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调试工具。熟练的掌握它,也能一定程度地提高我们的工作效率。
END绵薄之力
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
软件测试面试小程序
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础
获取方式 :
相关文章
- postman做接口测试 application/x-www-form-urlencoded 格式与json格式互转
- curl指令模拟postman发json数据,发本地文件
- postman访问报错,注意接口不能有其他空格
- 一文3000字从0到1实现基于PostMan的接口自动化测试(建议收藏)
- Postman使用json提交数据
- koa 项目实战(四)注册接口和调试工具(postman)
- 全网最细Postman接口测试教程---构建请求(详全)
- Postman 做测试的 6 个常见问题
- 用了国产接口管理神器 Apifox 之后,我果断从 Postman “脱坑”了
- 自从用了这个接口测试工具,我的Postman再也没打开过
- Postman核心功能解析-参数化和测试报告
- 全网最全postman接口测试从入门到精通全套教程
- Postman之接口关联
- 接口自动化测试:Postman实战教程
- 测试必备工具-Postman实战教程
- Postman测试Web API
- postman(九):postman接口测试脚本集成到jenkins
- postman(二):使用postman发送get or post请求
- 接口 PostMan 常用