测试 Postman 响应体 Json 是数组还是对象

Posted

技术标签:

【中文标题】测试 Postman 响应体 Json 是数组还是对象【英文标题】:Test if Postman response body Json is an array or object 【发布时间】:2019-05-18 18:19:54 【问题描述】:

我有一个正在测试的 API,我希望 responseBody 是一个 Json 对象(以“”开头)。然而,由于意外事件,响应可能会以数组形式返回(以“[”开头)。

如何使用 Postman 测试确定 responseBody 的类型(数组或对象)?

到目前为止,我拥有的最好的是: 当期望一个对象(不是数组)时

var bodyJson = pm.response.json();
tests["Response should not be an array"] = !(bodyJson instanceof Array);

【问题讨论】:

在某些使用 API 响应的情况下,它可能会将 JSON 对象单独放入一个数组中。 您可以使用不同的工具来检查它,例如带有响应断言的 JMeter 【参考方案1】:

你可以使用:

pm.test('is an Array', () => pm.expect(pm.response.json()).to.be.an('array').but.not.an('object'))

取自 ChaiJS - 它内置于原生 Postman 应用程序中。

【讨论】:

【参考方案2】:

例如你有以下 json


  "testA": [1, 2],
  "testB": "a": "b"

你可以使用Array.isArray()

var bodyJson = pm.response.json();
tests["Response should not be an array"] = !Array.isArray(bodyJson['testA']); // false
//tests["Response should not be an array"] = !Array.isArray(bodyJson['testB']);  // true

或者

var bodyJson = pm.response.json();
pm.test("is Array Test", function() 
    var notArray = !Array.isArray(bodyJson.testA) // false
    // var notArray = !Array.isArray(bodyJson.testB) // true
    pm.expect(notArray).to.eql(true);;
);

【讨论】:

以上是关于测试 Postman 响应体 Json 是数组还是对象的主要内容,如果未能解决你的问题,请参考以下文章

postman——集合——执行集合——测试脚本——示例01——检查响应体中是否包含一个字符串

解析 JSON Postman 响应

Postman测试工具调试接口详细教程向后端发送Json数据并接收返回的Json结果

接口测试-1.常用的接口测试工具(PostmansoupUIJemeter)

将文本响应转换为 JSON 数组(邮递员)

Postman参数化