簡體   English   中英

如何在 postman 測試中在一個 pm.test 中使用多個 pm.expect

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM