簡體   English   中英

在郵遞員中,無論大小寫或數組順序如何,我如何檢查響應中的值是否與請求的值相同?

[英]In postman, how can i check if the values in the response is same as that of the request irrespective of case or the order for an array?

我有一個類似的請求

{
    "Name":"123",
    "Age":"1234",
    "Phone":"12345",
    "RequestedABC":{"XYZ":"111abc","Qwe":"222abc","ZXC":"333def"}
}

響應是

{
    "Name": "123",
    "AllowedABC": {
        "XYZ": "111abc",
        "ZXC": "333def",
        "QWE": "222abc",
        }
}

我想測試允許的 ABC 是否與請求的 ABC 相同。 這意味着我想斷言響應中的所有鍵值對與請求的鍵值對相同​​,而不管它們在響應中的大小寫或順序。 提供的示例是通過場景。 我試過

var body = JSON.parse(request.data);
var jsonData = JSON.parse(responseBody);
pm.test("Granted ABC is same as requested ABCTest", () => {    
    pm.expect(jsonData.AllowedABC).to.eql(body.RequestedABC);    
});

但我收到一個錯誤

斷言錯誤:預期{Object(XYZ,ZXC...)} 與{Object (XYZ,Qwe,...)} 深度相等

這會起作用 - 不確定to.eql如何處理對象,但這會導致測試字符串

 const responseData = { "Name": "123", "AllowedABC": { "XYZ": "111abc", "ZXC": "333def", "QWE": "222abc", } } const requestData = { "Name":"123", "Age":"1234", "Phone":"12345", "RequestedABC":{"XYZ":"111abc","Qwe":"222abc","ZXC":"333def"} }; const sorter = ([a], [b]) => a.localeCompare(b); const transformer = obj => Object.entries(obj).map(([k, v]) => [k.toUpperCase(), v.toUpperCase()]).sort(sorter).join(); const requestABC = transformer(requestData.RequestedABC); const responseABC = transformer(responseData.AllowedABC); console.log(requestABC); console.log(responseABC); console.log(requestABC === responseABC);

在你的代碼中你會做

var body = JSON.parse(request.data);
var jsonData = JSON.parse(responseBody);

const sorter = ([a], [b]) => a.localeCompare(b);
const transformer = obj => Object.entries(obj).map(([k, v]) => [k.toUpperCase(), v.toUpperCase()]).sort(sorter).join();

const requestABC = transformer(body.RequestedABC);
const responseABC = transformer(jsonData.AllowedABC);

pm.test("Granted ABC is same as requested ABCTest", () => {    
  pm.expect(responseABC ).to.eql(requestABC);    
});

希望現在有意義

您可以使用一個函數來小寫所有鍵,例如keysToLowerCase(obj) ( https://gist.github.com/radutta/4480e8292372da56b426f7a4c65f8774 ) 然后測試小寫對象:

let allowedAbcLowercase = keysToLowerCase(jsonData.AllowedABC);
let requestedabcLowercase = keysToLowerCase(body.RequestedABC);

pm.test("Granted ABC is same as requested ABCTest", () => {
    pm.expect(allowedAbcLowercase).to.eql(requestedabcLowercase);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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