[英]How can I use multiple pm.expect in one pm.test in postman tests
我想檢查請求是否有一個字符串,然后響應必須在 postman 中包含這個字符串。 我寫了一個這樣的測試,但它對我不起作用。 我不確定我是否可以在有條件的一項測試中使用多個 pm.expect。 我的代碼是
pm.test("test",function(){
var hasA = data.hasOwnProperty('A');
var hasB = data.hasOwnProperty('B');
if(hasA === true){
pm.expect(response.A).to.eql(data.A);
}
if(hasB === true){
pm.expect(response.B).to.eql(data.B);
}});
請求可以同時包含 A 和 B,所以我不能使用 if..else 語句。 當我運行此測試時,如果 hasA 標志為真,那么即使 hasB 選項為真,代碼也不會 go 進入第二個。 我該如何處理這個問題。有人可以幫忙嗎?
expect 是硬斷言,所以如果一個失敗,那么它不會轉到下一個,所以你可以使用以下任何一種方法:
嘗試以下條件:
pm.test("test", function () {
var hasA = data.hasOwnProperty('A');
var hasB = data.hasOwnProperty('B');
var hasBoth = hasA && hasB
if (hasBoth) {
pm.expect([response.A, response.B]).to.eql([data.A, data.B]);
} else if (hasA) {
pm.expect(response.A).to.eql(data.A);
} else if (hasB){
pm.expect(response.B).to.eql(data.B);
}
});
或者
嘗試像這樣:
pm.test("test", function () {
var hasA = data.hasOwnProperty('A');
var hasB = data.hasOwnProperty('B');
let error = {};
try {
if (hasA) {
pm.expect(response.A).to.eql(data.A);
}
} catch (e) {
error.A = e
}
try {
if (hasB) {
pm.expect(response.A).to.eql(data.A);
}
} catch (e) {
error.B = e
}
if(Object.keys(error).length){
pm.expect.fail(JSON.stringify(error))
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.