场景 1:响应体是字典(对象)
假设接口返回的 JSON 数据如下:
{
"user": {
"id": 100,
"name": "张三",
"is_active": true,
"roles": ["admin", "editor"]
}
}
断言写法:
// 1. 检查字典中的字段值
pm.test("用户ID为100", function () {
const data = pm.response.json();
pm.expect(data.user.id).to.eql(100); // 严格等于
});
// 2. 检查字段类型
pm.test("用户名为字符串类型", function () {
const data = pm.response.json();
pm.expect(data.user.name).to.be.a("string");
});
// 3. 检查嵌套字典中的数组
pm.test("角色包含admin", function () {
const data = pm.response.json();
pm.expect(data.user.roles).to.include("admin"); // 检查数组是否包含元素
});
场景 2:响应体是列表(数组)
[
{ "id": 1, "name": "张三" },
{ "id": 2, "name": "李四" }
]
断言写法:
// 1. 检查列表长度
pm.test("用户列表长度为2", function () {
const data = pm.response.json();
pm.expect(data).to.have.lengthOf(2);
});
// 2. 检查列表中的元素是否符合条件
pm.test("第一个用户的ID为1", function () {
const data = pm.response.json();
pm.expect(data[0].id).to.eql(1); // 通过索引访问元素
});
// 3. 检查所有元素是否满足条件(高级用法)
pm.test("所有用户都有id和name字段", function () {
const data = pm.response.json();
data.forEach(user => {
pm.expect(user).to.have.all.keys("id", "name"); // 检查每个字典的键
});
});
3.常见错误避坑
// Postman中检查列表不为空
pm.expect(data).to.not.be.empty;
场景3:用户列表接口(列表 + 嵌套字典)
接口返回:
[
{
"id": 1,
"name": "张三",
"address": {
"city": "北京",
"zipcode": "100000"
}
},
{
"id": 2,
"name": "李四",
"address": {
"city": "上海",
"zipcode": "200000"
}
}
]
Postman 实现:
const data = pm.response.json();
// 检查所有用户字段
pm.test("所有用户都有必要字段", function () {
data.forEach(user => {
pm.expect(user).to.have.all.keys("id", "name", "address");
pm.expect(user.address.zipcode).to.match(/^\d{6}$/); // 正则匹配6位数字
});
});
2.解析响应主体数据
解析Json数据:
const responseJson = apt.response.json();
解析 XML:
const responseJson = xml2Json(apt.response.text());
解析 CSV:
const parse = require('csv-parse/lib/sync');
const responseJson = parse(apt.response.text());
解析 HTML:
const $ = cheerio.load(apt.response.text());
//打印测试的 HTML
console.log($.html());