Я хочу интегрировать тесты 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)
Пустые данные: пропущенные тесты
Проверяемые данные: пропущенные тесты
Какое будет правильное условие длямассив для запуска или пропуска тестов?