Автоматизация API — условный тест

#javascript #api #conditional-statements #postman

Вопрос:

прежде чем вы прочтете это, я полный нуб, извините за это.

У меня есть некоторая конечная точка, которая будет возвращать разные статусы в зависимости от того, сколько раз эта конечная точка вызывается. Либо он вернет статус 200, либо 409 с некоторой дополнительной информацией. В последнем случае он вернет что-то вроде этого:

 {
    "error": {
        "code": "ABC",
        "message": "ABC",
        "target": null,
        "innerError": null,
        "details": null
    }
}
 

и я хотел бы, чтобы тест прошел, если либо статус будет равен 200, либо будет 409 с «сообщением»: «ABC».

Я пробовал это по-разному, но я застрял на этом. Моя последняя попытка выглядела бы так:

 pm.test("Status is 200 or ABC", function () {
    if(pm.response.code !== 200)
    {
    var jsonData = pm.response.json();
    var expectedObject = {
    "message": "ABC"

    }
    }
    else
    {
        (pm.response.to.have.status(200))
        console.log("Success")
    }
});
 

и он прошел бы этот тест, даже если статус не равен 200 и если тело не содержит «сообщение»: «ABC».

Есть какие-нибудь идеи о том, как я мог бы это сделать?

Ответ №1:

Вы должны выполнить какую-то проверку, чтобы тест прошел/не прошел. Условие должно быть примерно таким:

 var jsonData = pm.response.json();
// expecting that jsonData.message will be equal to "ABC"
pm.expect(jsonData.message).to.eql("ABC")
 

В случае сомнений, проверьте документы