![](/img/trans.png)
[英]how do i fail a test if postman response status code is 500 server error?
[英]How can I log all failures in tv4.validateMultiple to Test Results tab with correct fail status
我已經能夠從tv4.validateMultiple中獲取錯誤消息以顯示在測試結果中,但我無法弄清楚如何將它們設置為顯示失敗狀態。
var jsonData = JSON.parse(responseBody);
var schema = {...contains multiple error}
var results = tv4.validateMultiple(jsonData, schema);
if(results.valid){
pm.test('Response has valid schema') = true;
} else {
for (var i = 0; i < results.errors.length; i++) {
pm.test("Contract: JSON Response has invalid schema in path [" + results.errors[i].dataPath + " | " + results.errors[i]);
}
}
“測試結果”選項卡中記錄了多條消息,但狀態為“通過”。 使用'舊式'郵差測試[],你可以設置它= false。 但是這不能在for循環中使用,因為測試將在第一次失敗時結束。 pm.test將繼續,但狀態通過。
我嘗試在for循環中放置pm.test('Schema is valid',function(){pm.expect ...}但是得到消息“不要在循環中生成函數”消息。所以我嘗試拉動外面的功能部分,也沒用。
我也試過Ajv並設置allErrors:true。
我想做的就是驗證整個響應並報告測試選項卡和xtrareports中的所有失敗。
我確信這可以改進,但以下工作。
var jsonData = JSON.parse(responseBody);
var schema = {
"type": "object",
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"properties": {
"field1": { "type": "string", "pattern": uuid_format },
"field2": { "type": "string", "pattern": date_format },
"field3": { "type": "string" },
"field4": { "type": "string", "enum": ["ACTIVE", "INACTIVE"]},
}
},
"pages": { "type": ["string", "null"]
}
}
};
var result = tv4.validateMultiple(jsonData, schema);
if (result.valid){
pm.test("Contract: JSON Response has valid schema"), setTestStatus;
} else {
for (var i = 0; i < result.errors.length; i++) {
pm.test('JSON Response is INVALID ' + result.errors[i].dataPath +" " + result.errors[i].message, setTestStatus);
}
}
function setTestStatus() {
pm.expect(result.valid).to.be.true;
}
我無法使用ajv獲得正確的通過/失敗狀態,我想使用它而不是tv4。 我確定它與我的正則表達式或類似的細節有關,即使我使用在線驗證器測試了正則表達式模式/響應值和模式。 但無論如何它在這里。
var uuid_format = '/^[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}$/i'
var Ajv = require('ajv'),
ajv = new Ajv({logger: console, allErrors: true}),
var jsonData = JSON.parse(responseBody);
var schema = {...see above...}
var valid = ajv.validate(schema, jsonData);
if(valid){
pm.test('Contract: JSON Response is valid', setTestStatus);
} else {
for (var i = 0; i < ajv.errors.length; i++) {
pm.test('JSON Response is INVALID ' + ajv.errors[i].dataPath +" " + ajv.errors[i].message, setTestStatus);
}
}
function setTestStatus() {
pm.expect(result.valid).to.be.true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.