![](/img/trans.png)
[英]How to validate a large response body contains expected values in Cypress test?
[英]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.