断言
1、断言状态码 Status code: Code is 200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
2、断言是否包含某字符串 Response body: Contains string
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
3、断言json数据 Response body: JSON value check
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
关联
实现步骤
假设:A接口的数据,被B接口依赖
1. 发送 A接口请求,获取响应数据
var jsonData = pm.reponse.json()
2. 将 数据写入到 公共容器(全局变量、环境变量)中。
①全局变量,在整个postman生效
pm.globals.set("全局变量名",全局变量值)
②环境变量,在特定环境下生效
pm.environment.set("环境变量名", 环境变量值)
3. B接口,从 容器获取 数据, 发送接口请求
{{变量名}}
//1、获取响应结果
var jsonData = pm.response.json()
//2、从响应结果中提取城市名
var city = jsonData.city
//3、将城市名放到环境变量中
pm.environment.set('en_city',city)
参数化
1、csv
①应用场景:数据组织格式简单,适用于大量数据场景
②优点
1)数据组织格式简单
③缺点
1)不能测试bool类型,因为postman读取csv文件后,会将所有非数值类型自动添加""变为字符串
2)不能存储复杂数据类型(元组、列表、字典)
3)不能实现参数测试
csv文件(报存为UTF-8格式):
username,password,locationCode
RQ025,209,CW003
RQ024,209,CW003
2、json
①用于场景:数据组织格式详细,适用于 少量、参数化测试。
②优点
1)可以测试bool类型
2)可以使用复杂数据类型
3)可以实现参数测试
③缺点
1)相同数据量 json文件要远大于csv文件
json文件(报存为UTF-8格式):
[
{"username":"张三","pwd":"123456","msg":"登录成功"},
{"username":"李四","pwd":"12456","msg":"登录失败"}
]
3、读取数据
●第一种:请求参数(请求行、请求头、请求体)中,使用数据文件中的数据
csv文件: {{字段名}}; json文件: {{键名}}
●第二种:代码(Tests) 中,使用数据文件中的数据
csv文件: data.字段名; json文件: data.键名
测试报告
利用newman插件进行生成测试报告
# shell命令
newman run 用例集文件 -e 环境变量文件 -d 测试数据文件 -r htmlextra --reporter-htmlextra-export report.html
其中:
run xxx.json :执行测试集文件
-e source:指定环境变量文件 (非必须)
-d source:指定测试数据文件(非必须)
-r htmlextra:指定生成测试报告的类型
--reporter-htmlextra-export source:指定存放测试报告的路径
eg:
newman run test.postman_collection.json -e 测试环境.postman_environment.json -d test.csv -r htmlextra --reporter-htmlextra-export report.html