我试图理解如何用postman编写断言,以验证对象中没有额外的键:值对。
例如,下面是一些测试数据:
"testArray": [
{
"key-1" : "value1a"
"key-2" : "value2a"
},
{
"key-1" : "value1b"
"key-2" : "value2b"
},
]我可以很容易地将断言写到testArray的长度为“2”,我可以验证键值对的实际值是否按预期返回。我有个问题,弄清楚如何找出一个密钥-3没有返回。
现在,如果我知道什么是可能的密钥,我可以验证它是“未定义的”,但是如果我不知道一个潜在的键值对的名称,我想确保我可以断言这些都是我想要的选项。
如果没有一个简单的解决方案,比如能够计算对象中键对的数量,那么我是否需要沿着创建循环的路线遍历数组中的对象,以便将它们与有效值列表进行比较?
发布于 2019-10-16 18:45:19
我不知道您目前有哪些测试/断言,但您可以扩展这些测试/断言来添加以下内容:
pm.test("Each object should have 2 keys", () => {
_.each(pm.response.json().testArray, (item) => {
pm.expect(item).to.be.an('object').and.have.keys(['key-1', 'key-2'])
})
})这只是一个基于您所包含的数据的示例,您的数据看起来并不像一个实际的响应,因为它不是有效的JSON,但是我修改了它,以看到测试通过/失败。
这个断言将检查testArray数组中的每个项是否是一个对象,并且它只有应该存在的键。如果要向数据中添加第三个键,断言将失败。
发布于 2019-10-23 16:41:48
嗨,这应该使用Json模式而不是for循环来完成。
请参阅以下答复:
https://stackoverflow.com/a/58436108/6793637
只需复制粘贴响应即可生成架构。
在创建架构之前,请确保选中复选框。

https://stackoverflow.com/questions/58419015
复制相似问题