簡體   English   中英

如何將包含多個值的環境變量與響應主體 json 進行比較

[英]How to compare environment variable that contains multiple values to response body json

我有一個在 PATCH 主體中使用的環境變量,我想確保它與同一 PATCH 的響應主體中的環境變量匹配。

環境變量和響應體的結構完全相同:

"compliance":{
        "documents": true,
        "shareInfo": true,
        "applicationUnderstood": true,
        "authoriseCheck": true,
        "drivingLicenceType": "EU"
    }

我嘗試了以下方法,但出現“TypeError:無法讀取未定義的屬性“文檔””的錯誤

pm.test("Assert ComplianceDetails", function () {
    var complianceData = (pm.environment.get("Compliance"))
    pm.expect(jsonData.compliance.documents).to.eql(complianceData.compliance.documents)
    pm.expect(jsonData.compliance.shareInfo).to.eql(complianceData.compliance.shareInfo)
    pm.expect(jsonData.compliance.applicationUnderstood).to.eql(complianceData.compliance.applicationUnderstood)
    pm.expect(jsonData.compliance.authoriseCheck).to.eql(complianceData.compliance.authoriseCheck)
    pm.expect(jsonData.compliance.drivingLicenceType).to.eql(complianceData.compliance.drivingLicenceType)
});

我已經設法使用 .split(' ') 讓它工作,但如果將來有什么改變,我不想讓我的測試變得脆弱。 有沒有辦法使用上面的方法來讓它工作? 我也不想進一步分離環境變量。

如果您通過腳本將 postman 變量設置為:

pm.environment.set("Compliance",{"compliance":{
        "documents": true,
        "shareInfo": true,
        "applicationUnderstood": true,
        "authoriseCheck": true,
        "drivingLicenceType": "EU"
    }})

然后它將被存儲為 javascript object 並且您的代碼按原樣工作:

    var complianceData = (pm.environment.get("Compliance"))
    pm.expect(jsonData.compliance.documents).to.eql(complianceData.compliance.documents)
    pm.expect(jsonData.compliance.shareInfo).to.eql(complianceData.compliance.shareInfo)
    pm.expect(jsonData.compliance.applicationUnderstood).to.eql(complianceData.compliance.applicationUnderstood)
    pm.expect(jsonData.compliance.authoriseCheck).to.eql(complianceData.compliance.authoriseCheck)
    pm.expect(jsonData.compliance.drivingLicenceType).to.eql(complianceData.compliance.drivingLicenceType)

否則,如果您已將內容復制並粘貼到環境變量中,則將其存儲為字符串,您必須先對其進行解析:

var complianceData = JSON.parse(pm.environment.get("Compliance"))
pm.expect(jsonData.compliance.documents).to.eql(complianceData.compliance.documents)
pm.expect(jsonData.compliance.shareInfo).to.eql(complianceData.compliance.shareInfo)
pm.expect(jsonData.compliance.applicationUnderstood).to.eql(complianceData.compliance.applicationUnderstood)
pm.expect(jsonData.compliance.authoriseCheck).to.eql(complianceData.compliance.authoriseCheck)
pm.expect(jsonData.compliance.drivingLicenceType).to.eql(complianceData.compliance.drivingLicenceType)

評論

下面的 object 不是有效的 javascript object,你必須用大括號括起來:

無效的:

"compliance":{
        "documents": true,
        "shareInfo": true,
        "applicationUnderstood": true,
        "authoriseCheck": true,
        "drivingLicenceType": "EU"
    }

有效的:

{
    "compliance":{
            "documents": true,
            "shareInfo": true,
            "applicationUnderstood": true,
            "authoriseCheck": true,
            "drivingLicenceType": "EU"
        }
}

如果您不想以這種格式存儲它,那么您可以在腳本中執行以下操作:

  var complianceData = "{"+(pm.environment.get("Compliance"))+"}"
  // or `{${pm.environment.get("Compliance")}}`

暫無
暫無

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

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