Условные тесты почтальона, если массив тела json пуст = пропустить тесты - PullRequest
1 голос
/ 25 сентября 2019

Я хочу интегрировать тесты 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)

Пустые данные: пропущенные тесты

Проверяемые данные: пропущенные тесты

Какое будет правильное условие длямассив для запуска или пропуска тестов?

1 Ответ

0 голосов
/ 25 сентября 2019

Не могли бы вы использовать что-то вроде этого:

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"));
    });
});
...