如何在Postman中测试响应体字段的文本/数字属性?
正确的Postman API测试方案
测试需求
验证GET接口返回的缩写列表中:
- 每个对象的
id字段为数字类型 - 每个对象的
text字段是不含数字的缩写(格式如A.D.、a.m.这类带点的缩写)
原测试代码的问题
- 接口响应是数组,原代码直接访问
jsonData.id/jsonData.text,未遍历数组中的每个元素,无法覆盖所有条目验证 - 验证
id的逻辑错误:to.include(Number)不是检查类型的正确写法 - 验证
text的逻辑完全错误:parseInt()无参数,且未匹配“不含数字+是缩写”的规则
正确的测试代码
// 获取响应的JSON数组 const jsonData = pm.response.json(); pm.test("所有id均为数字类型", function () { // 遍历数组中的每个条目 jsonData.forEach(item => { // 验证id是数字类型 pm.expect(item.id).to.be.a('number'); // 可选:如果需要验证id是正整数,可添加下面这句 // pm.expect(item.id).to.be.an('integer').and.to.be.above(0); }); }); pm.test("所有text均为不含数字的缩写", function () { // 正则规则:匹配不含数字、且至少包含一个点的字符串 const abbreviationRegex = /^[^\d]*\.[^\d]*$/; jsonData.forEach(item => { // 验证text符合正则规则 pm.expect(item.text).to.match(abbreviationRegex); // 也可以拆分验证,逻辑更清晰: // pm.expect(item.text).to.not.match(/\d/); // pm.expect(item.text).to.include('.'); }); });
代码说明
- 先通过
pm.response.json()获取接口返回的数组数据 - 两个测试用例分别遍历数组内的每个对象,逐一验证字段规则
- 针对
text的验证,正则表达式/^[^\d]*\.[^\d]*$/确保字符串不含数字且包含缩写特征的点;也可拆分为两个独立断言,方便定位问题 - 若需额外限制
id为正整数,可启用注释中的断言
内容的提问来源于stack exchange,提问作者Julia
相关产品推荐
相关产品推荐

