如何在预请求脚本中验证 POST 请求正文所需的参数?
How to validate POST request body required params in Pre-request script?
我的请求正文中的 JSON 原始数据中几乎没有需要的参数,我想在 Postman 的预请求脚本中验证这些参数是否存在于正文中。
{
"stores": [
{
"city": "Tokyo",
"name": "Church Street"
....
....
}
]
}
如何检查请求正文中是否传递了city
和name
?
使用 pm.test
,因为您可以在 运行 结果中看到请求正文、内容类型、响应内容。导出结果的详细信息太多。
测试请求正文:
pm.test(JSON.parse(pm.request.body));
测试使用请求正文编码的 URL:
pm.test(JSON.stringify(pm.request.body.urlencoded.toObject(true)));
测试请求正文中的原始文本:
pm.test(JSON.parse(pm.request.body.raw));
示例:
var reqBody = request.data; //JSON.parse(request.data);
tests["Data"] = reqBody.stores[0].city !== null;
您可以将 pm.test
函数与 Pre-request Scripts
中的 pm.expect
断言一起使用。
由于 Postman 自带 Lodash,你可以在沙盒中使用 _.get() 函数从 stores
数组中获取数据。您需要使用 JSON.parse()
在 _.get()
函数中正确分配来自请求正文的数据。
let requestBody = _.get(JSON.parse(pm.request.body.raw), 'stores[0]')
pm.test("Check Body", () => {
pm.expect(requestBody).to.have.keys(['city', 'name'])
})
或者像这样没有 Lodash 的东西:
let requestBody = JSON.parse(pm.request.body.raw)
pm.test("Check Body", () => {
pm.expect(requestBody.stores[0]).to.have.keys(['city', 'name'])
})
有关 pm.*
API 的更多信息可在此处找到:
https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/
我的请求正文中的 JSON 原始数据中几乎没有需要的参数,我想在 Postman 的预请求脚本中验证这些参数是否存在于正文中。
{
"stores": [
{
"city": "Tokyo",
"name": "Church Street"
....
....
}
]
}
如何检查请求正文中是否传递了city
和name
?
使用 pm.test
,因为您可以在 运行 结果中看到请求正文、内容类型、响应内容。导出结果的详细信息太多。
测试请求正文:
pm.test(JSON.parse(pm.request.body));
测试使用请求正文编码的 URL:
pm.test(JSON.stringify(pm.request.body.urlencoded.toObject(true)));
测试请求正文中的原始文本:
pm.test(JSON.parse(pm.request.body.raw));
示例:
var reqBody = request.data; //JSON.parse(request.data);
tests["Data"] = reqBody.stores[0].city !== null;
您可以将 pm.test
函数与 Pre-request Scripts
中的 pm.expect
断言一起使用。
由于 Postman 自带 Lodash,你可以在沙盒中使用 _.get() 函数从 stores
数组中获取数据。您需要使用 JSON.parse()
在 _.get()
函数中正确分配来自请求正文的数据。
let requestBody = _.get(JSON.parse(pm.request.body.raw), 'stores[0]')
pm.test("Check Body", () => {
pm.expect(requestBody).to.have.keys(['city', 'name'])
})
或者像这样没有 Lodash 的东西:
let requestBody = JSON.parse(pm.request.body.raw)
pm.test("Check Body", () => {
pm.expect(requestBody.stores[0]).to.have.keys(['city', 'name'])
})
有关 pm.*
API 的更多信息可在此处找到:
https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/