postman数据驱动与断言
沈一愣
test验证:
1.验证状态
自带函数:status code
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
2.验证值等于:
(1).部分值等于。
自带函数:json value check
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
EG:value为:jsonData.success 或jsonData['success'] 组合成pm.except().to.eql(true),或直接判断是否相等 pm.response.json().success = true
(2).整个响应体等于
自带函数:response body is equal to a string
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
3.验证字符串包含
自带函数:contains string
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
4.验证正则匹配 注意必须要有【1】
格式:res.match(new RegExp("此处填入字符串,带引号"))[1],,res为返回体的.text()格式数据;欲匹配项用(.+?)表示,
把待验证的部分,用正则表达式表示并提取出来(pm.response.text().match(new RegExp("")))[1],然后验证提取的值等于你期望的值。
EG:
pm.test("正则匹配验证",function() {
res=pm.response.text()
var exp = res.match(new RegExp(""success":(.+?),"))[1]
pm.expect(exp).to.eql("true")
}) 注意[1]和匹配字符串中的空格
正则匹配时,输入(.+?)时,如果是搜狗输入法,有可能会习惯性多一个括号,要注意删除。
5.验证返回是否是图片
自带函数:content-type header check
pm.test("查看是否是图片", function () {
pm.response.to.have.header("Content-Type","image/png");
});
5.JSON格式,有时候可以直接用来匹配,不一定非用正则
6.console.log(pm.response.json().topic_id) 在控制台打印。。
postman 数据驱动
将接口先保存到收藏夹中,因为Postman批量执行接口测试,必须是同一个文件夹的接口才可以。
可以有两种格式造数据:
第一种,json格式:
[
{"":"","":"","":"","":""},
{"":"","":"","":"","":""},
{"":"","":"","":"","":""}
]
有多少入参,每条数据里就多少组入参和对应值。
第二种,csv格式,方便一些,直接用notepad编辑,选择编码
,第一行是所有入参,下面的行是所有对应值,不用每个值都加引号。
然后保存为**.csv格式的文件
EG:
title,tab,content
真无聊00,ask,端午节都干啥啊
真无聊01,ask,端午节都干啥啊
真无聊02,ask,端午节都干啥啊
选择线程,选择文件,选择文件格式,选择预览(preview),看是否有乱码的情况。
#################################################################
数据中加断言才是完美完整合理的数据
#################################################################
实现数据驱动和断言:
1 分析用例数据,设计数据文件
2 在测试脚本中,使用参数关联技术,关联参数到数据文件中的数据,
目标就是把数据文件中的参数,分别关联到请求数据和断言数据中,怎么做呢,这里要介绍两个方法
:
1.请求参数可以通过{{var}}来引用
;
2.断言中的数据,由于是在Tests中写入的脚本,并不能直接通过{{var}}来引用,所以需要引用Postman的相关API进行调用,如:pm.variables.get("var")
pm.variables.get("数据文件中相应的变量名")
3.空内容在数据中,要用空格代替。不能直接两个逗号,中间要加空格。
eg:
pm.test("Status code is 400", function () {
pm.response.to.have.status(400);
});
pm.test("success值为:false", function () {
res = pm.response.text()
var exp = res.match(new RegExp(""success":(.+?),"))[1]
var su = pm.variables.get('success')
pm.expect(exp).to.eql(su);
});
pm.test("信息提示正确", function () {
res = pm.response.text();
var exp = res.match(new RegExp(""error_msg":"(.+?)""))[1]
pm.expect(exp).to.eql(pm.variables.get('error_msg'));
});
newman run .json -r html --reporter-html-export 文件目录