Json 如何使用错误消息中的邮递员返回键/值进行ajv验证 背景
我正在使用json模式验证。它工作得很好,但是它只为整个架构验证提供了一个失败/通过的结果,而不是确切的失败键/值对:Json 如何使用错误消息中的邮递员返回键/值进行ajv验证 背景,json,validation,postman,Json,Validation,Postman,我正在使用json模式验证。它工作得很好,但是它只为整个架构验证提供了一个失败/通过的结果,而不是确切的失败键/值对: var Ajv = require('ajv'), ajv = new Ajv({logger: console}), schema = { "properties": { "data" : { "type": "object",
var Ajv = require('ajv'),
ajv = new Ajv({logger: console}),
schema = {
"properties": {
"data" : {
"type": "object",
"properties" : {
"categories" : {
"type": "array",
"items" : [
{"type": "object",
"properties" : {
"id": {"type": "number"},
"ref": {"type": ['null', 'string']},
"parent_id": {"type": ['null', 'number']},
"image": {"type": ['null', 'string']},
...
pm.test('Schema is valid', function() {
var data = pm.response.json()['data'];
pm.expect(ajv.validate(schema, {data: data})).to.be.true;
});
问题:
如何让avj/postman返回完全错误的密钥/对验证
更新
要使其工作,avj对象必须这样声明:
var Ajv = require('ajv'),
ajv = new Ajv({logger: console,
allErrors: true,
verbose: true
}),
存在保存信息的
ajv.errors
对象
例如,通过在pm.expect()
语句中添加类似的内容,它应该在Postman测试结果中显示错误的消息部分:
pm.expect(ajv.validate(ajv.validate(schema, {data: data}), JSON.stringify(ajv.errors[0].message)).to.be.true;
这只会显示数组中的第一个对象,因此如果您想遍历该数据,则需要以不同的方式捕获该对象。在控制台中打印错误消息的正确方法是添加一个额外的参数来验证()。 首先在Postman脚本测试开始时声明一个“printErrors”函数:
function printErrors(ajv){
if(ajv.errors !== null){
console.log(JSON.stringify(ajv.errors[0]));
}
}
然后添加a调用以进行验证,如下所示:
var ajv = new Ajv({logger: console,
allErrors: true,
verbose: true
}),
yourData = {"your Data"}
yourSchema = {"your schema"};
pm.test('Schema is valid', function() {
pm.expect(ajv.validate(schema, yourData), printErrors(ajv)).to.be.true;
});
您将在控制台框中看到日志。要打开它,你必须点击控制台按钮,从左边开始的第三个按钮 有一个
errors
对象保存信息-pm.expect(ajv.validate(accessSchema,pm.response.json()),json.stringify(ajv.errors[0].message)).to.be.true代码>不确定答案,但里面有东西可以暴露出来。太好了!如果你把你的评论作为一个答案,我会把它标记为正确的答案,我很想看看你是如何使用它的。任何与任何文章相关的链接都将不胜感激:)更好的输出是JSON.stringify(ajv.errors[0])
-它提供了比归档消息更多的细节当然,我只是选择了一个可以告诉您实际问题的