我遇到了将对象类型的Env变量与Postman中的响应对象进行比较的问题,即使它看起来一样,也无法在任何地方找到答案。
以下是例子:
使用的对象是:
"user":
{
"id" = 1,
"first_name": "John",
"last_name": "Smith"
}
使用POST请求时,我使用以下方法将对象保存为环境变量:
var reqdata = JSON.parse(data.request);
postman.setEnvironmentVariable("User", JSON.stringify(reqdata.user));
然后在GET响应中我想通过使用:
来比较它预请求脚本:
user = JSON.parse(postman.getEnvironmentVariable("User"));
然后在测试中:
var data = JSON.parse(responseBody);
tests["user contains correct data"] = data.user == user;
console.log(data.user);
console.log(user);
console.log返回完全相同的对象但我仍然失败。我尝试使用Object.is()和===但它仍然返回失败。有人可以告诉我我错过了什么吗?
干杯
答案 0 :(得分:0)
我找到了一个解决方案,我已经使用过:
tests["user contains correct data" = JSON.stringify(data.user) == JSON.stringify(user);
我也可以删除测试脚本并使用bare postman.getEnvironmentVariable而不是第二个stringify()。
答案 1 :(得分:0)
您可以在这里的一个非常相似的问题中找到更好的解决方案: How to write a postman test to compare the response json against another json?
我有一个类似的问题需要解决,只是我的 JSON 还包含一个对象数组。 我在这个问题或其他答案中的一个答案将提供一个更稳定的比较解决方案。
我创建了一个名为“assert”的全局函数数组,其中包含诸如“areEqual”和“areArraysOfObjectsEqual”之类的辅助函数,并将它们保存在我测试的顶级文件夹级别的“测试”选项卡下。