在 post 人中断言整个响应主体
Asserting entire response body in post man
我最近开始研究 spring 引导项目。
我正在寻找一种方法来断言我的 API 的整个响应。
这样做的目的是减少 API.
的测试时间。
找到了下面提到的一些解决方案,但没有任何帮助我解决问题。
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
当我将整个响应主体作为参数时,出现以下错误。
- 未闭合的字符串
2。
3。
如果您想使用与在其中定义的字符串相同类型的引号,则必须对它们进行转义:
'string with "quotes"'
"string with 'quotes'"
'string with \'quotes\''
"string with \"quotes\""
您可能想将 json 放在单引号中,因为 json 本身不允许。
您可以尝试将响应设置为变量然后对其进行断言吗?
var jsonData = pm.response.json()
pm.environment.set('responseData', JSON.stringify(jsonData))
从这里您可以获取数据 JSON.parse(pm.enviroment.get('responseData'))
,然后在任何测试中使用它来针对 所有 值进行断言。
pm.test("Body is correct", () => {
var jsonData = pm.response.json()
pm.expect(jsonData).to.deep.equal(JSON.parse(pm.environment.get('responseData')))
})
我的理由是,无论如何您都在尝试针对 JSON 进行断言,但作为纯文本字符串进行操作。
或者您可以像这样分别对值进行断言:
pm.test("Body is correct", () => {
var jsonData = pm.response.json()
pm.expect(jsonData[0].employeeName).to.equal("tushar")
pm.expect(jsonData[0].phNum).to.equal(10101010)
})
根据 JSON 结构,您可能不需要访问数据数组,并且可以删除 [0]
。
我最近开始研究 spring 引导项目。 我正在寻找一种方法来断言我的 API 的整个响应。 这样做的目的是减少 API.
的测试时间。找到了下面提到的一些解决方案,但没有任何帮助我解决问题。
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
当我将整个响应主体作为参数时,出现以下错误。
- 未闭合的字符串
2。
3。
如果您想使用与在其中定义的字符串相同类型的引号,则必须对它们进行转义:
'string with "quotes"'
"string with 'quotes'"
'string with \'quotes\''
"string with \"quotes\""
您可能想将 json 放在单引号中,因为 json 本身不允许。
您可以尝试将响应设置为变量然后对其进行断言吗?
var jsonData = pm.response.json()
pm.environment.set('responseData', JSON.stringify(jsonData))
从这里您可以获取数据 JSON.parse(pm.enviroment.get('responseData'))
,然后在任何测试中使用它来针对 所有 值进行断言。
pm.test("Body is correct", () => {
var jsonData = pm.response.json()
pm.expect(jsonData).to.deep.equal(JSON.parse(pm.environment.get('responseData')))
})
我的理由是,无论如何您都在尝试针对 JSON 进行断言,但作为纯文本字符串进行操作。
或者您可以像这样分别对值进行断言:
pm.test("Body is correct", () => {
var jsonData = pm.response.json()
pm.expect(jsonData[0].employeeName).to.equal("tushar")
pm.expect(jsonData[0].phNum).to.equal(10101010)
})
根据 JSON 结构,您可能不需要访问数据数组,并且可以删除 [0]
。