我有一个关于如何使用带有条件语句的新pm。* API的问题。请查看以下示例代码
if(pm.test("Status code is 200", function() {pm.expect(pm.response.code).to.equal(300);
})){
var token = pm.response.headers.get("Authorization");
pm.environment.set("JWT Token", token.substr(7));
pm.test("Response body is empty ", function () {
pm.expect(pm.response.text().length).to.equal(0);
});
}
console.log(pm.test("Status code is 200", function() {pm.expect(pm.response.code).to.equal(300)}));
我可能想要进行某些测试,例如只有当200返回时我才想使用if。但是,当我故意将等值更改为300以检查是否有效时,即使第一次测试失败,也会运行两个测试并设置变量。
对于断言,console.log返回一个空对象而不是true / false。如果我使用像
这样的东西console.log(pm.expect(pm.response.code).to.equal(300));
我收到一条错误消息:评估测试脚本时出错:AssertionError:预计200到300等等
有谁知道如何解决这个问题?
干杯
答案 0 :(得分:9)
我也曾在邮递员的github上问过这个问题而且我得到了帮助。显然pm.test不会返回测试结果,因为你可以在一个pm.test中有多个断言,并且这些断言是异步执行的。
以下代码按预期工作:
pm.test("Status code is 200", function() {
pm.expect(pm.response.code).to.equal(200);
});
(pm.response.code===200 ? pm.test : pm.test.skip)("Response body is empty", function () {
pm.expect(pm.response.text().length).to.equal(0);
var token = pm.response.headers.get("Authorization");
pm.environment.set("JWT Token", token.substr(7));
});
答案 1 :(得分:2)
如果您要在此处执行的所有操作是如果响应代码不是200,则跳过其余测试,则可以执行以下操作:
pm.test("Status code is 200", function() {
pm.expect(pm.response.code).to.equal(200);
});
if (pm.response.code !== 200) {
return;
}
// Tests that require 200 could continue here