Postman 条件测试如果 json body 数组为空 = 跳过测试
Postman conditional tests if json body array is empty = skip tests
我想将 Postman/Newman API 测试集成到 CICD 中,因此测试结果应该总是通过(或跳过)。因此,我想根据响应数据使用条件测试。
我尝试了 GitHub 中描述的方法,但我的情况非常不同。
因此,如果响应的 json 正文包含空数组,则应跳过测试。如果没有,请执行测试...
空数据
{
"data": []
}
可测试数据
{
"data": [
{
"key1": "value1",
"key2": {
"amount": 1357,
"unit": "units"
},
"from": "2019-08-01",
"to": "2019-08-31",
}
]
}
测试脚本
let response = JSON.parse(responseBody);
pm.test("Status code is 200", function() {
pm.expect(pm.response.code).to.equal(200);
});
(pm.expect(pm.response.json().data).to.be.empty === true ? pm.test.skip : pm.test)('Body is empty', function () {
pm.environment.set("key2Amount", response.data[0].key2.amount);
var key2Amount = pm.environment.get("key2Amount");
pm.test("Response includes corresponding amount", function () {
pm.expect(pm.response.json().data[0].key2.amount).to.eql(key2Amount);
});
});
空数据:TypeError: Cannot read property 'key2' of undefined
.
可测试数据:AssertionError: expected [ Array(1) ] to be empty
.
我也试过
(pm.expect([]).to.be.an('array').that.is.empty ? pm.test : pm.test.skip)
可测试数据:测试结果呈阳性。
空数据:TypeError: Cannot read property 'key2' of undefined
。为什么不跳过?
进一步
(pm.expect([]).to.be.empty ? pm.test.skip : pm.test)
空数据:跳过测试
可测试数据:跳过测试
阵列上进行测试的正确条件是什么 运行 或跳过?
你能用这样的东西吗:
let response = pm.response.json();
pm.test("Status code is 200", function() {
pm.expect(pm.response.code).to.equal(200);
});
let skipTest = (response.data === undefined || response.data.length === 0);
(skipTest ? pm.test.skip : pm.test)('Body is empty', function () {
pm.environment.set("key2Amount", response.data[0].key2.amount);
pm.test("Response includes corresponding amount", function () {
pm.expect(response.data[0].key2.amount).to.eql(pm.environment.get("key2Amount"));
});
});
我想将 Postman/Newman API 测试集成到 CICD 中,因此测试结果应该总是通过(或跳过)。因此,我想根据响应数据使用条件测试。
我尝试了 GitHub 中描述的方法,但我的情况非常不同。
因此,如果响应的 json 正文包含空数组,则应跳过测试。如果没有,请执行测试...
空数据
{
"data": []
}
可测试数据
{
"data": [
{
"key1": "value1",
"key2": {
"amount": 1357,
"unit": "units"
},
"from": "2019-08-01",
"to": "2019-08-31",
}
]
}
测试脚本
let response = JSON.parse(responseBody);
pm.test("Status code is 200", function() {
pm.expect(pm.response.code).to.equal(200);
});
(pm.expect(pm.response.json().data).to.be.empty === true ? pm.test.skip : pm.test)('Body is empty', function () {
pm.environment.set("key2Amount", response.data[0].key2.amount);
var key2Amount = pm.environment.get("key2Amount");
pm.test("Response includes corresponding amount", function () {
pm.expect(pm.response.json().data[0].key2.amount).to.eql(key2Amount);
});
});
空数据:TypeError: Cannot read property 'key2' of undefined
.
可测试数据:AssertionError: expected [ Array(1) ] to be empty
.
我也试过
(pm.expect([]).to.be.an('array').that.is.empty ? pm.test : pm.test.skip)
可测试数据:测试结果呈阳性。
空数据:TypeError: Cannot read property 'key2' of undefined
。为什么不跳过?
进一步
(pm.expect([]).to.be.empty ? pm.test.skip : pm.test)
空数据:跳过测试
可测试数据:跳过测试
阵列上进行测试的正确条件是什么 运行 或跳过?
你能用这样的东西吗:
let response = pm.response.json();
pm.test("Status code is 200", function() {
pm.expect(pm.response.code).to.equal(200);
});
let skipTest = (response.data === undefined || response.data.length === 0);
(skipTest ? pm.test.skip : pm.test)('Body is empty', function () {
pm.environment.set("key2Amount", response.data[0].key2.amount);
pm.test("Response includes corresponding amount", function () {
pm.expect(response.data[0].key2.amount).to.eql(pm.environment.get("key2Amount"));
});
});