【发布时间】:2019-03-21 21:35:45
【问题描述】:
我已经能够让 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 将继续,但状态为通过。
我尝试将 pm.test('Schema is valid', function() {pm.expect...} 放在 for 循环中,但收到消息“不要在循环中创建函数”消息。所以我试着把功能部分拉到外面,也没用。
我也尝试过 Ajv 并设置 allErrors: true。
我要做的就是验证整个响应并在测试选项卡和 xtrareports 中报告所有失败。
【问题讨论】: