Краткое руководство по Chai в Postman

Краткое руководство по Chai в Postman

Основные методы Chai для написания тестов в Postman

Здесь я выкладываю список ключевых методов Chai, используемых в Postman для написания тестов через pm.expect. Примеры показывают, как проверять ответы API.

Chai.js это библиотека JavaScript, которая использует подход BDD(Behavior-Driven Development). Главный принцип BDD - Сценарии описываются на естественном языке, чтобы их понимали все участники проекта, включая разработчиков, тестировщиков и представителей бизнеса.

1. to.equal

Описание: Проверяет, равно ли значение ожидаемому (строгое равенство ===).

Пример кода
pm.test("Проверка статус-кода", () => {
    pm.expect(pm.response.code).to.equal(200); // Проверяет, что статус-код равен 200
});

pm.test("Проверка значения в ответе", () => {
    const response = pm.response.json();
    pm.expect(response.id).to.equal(1); // Проверяет, что id равен 1
});

2. to.be

Описание: Используется для проверки типов или простых условий (например, an, undefined, true).

Пример кода
pm.test("Проверка типа ответа", () => {
    const response = pm.response.json();
    pm.expect(response).to.be.an("object"); // Проверяет, что ответ — объект
});

pm.test("Проверка на undefined", () => {
    const response = pm.response.json();
    pm.expect(response.error).to.be.undefined; // Проверяет, что поле error отсутствует
});

3. to.have

Описание: Используется для проверки наличия свойств или значений (например, property, status).

Пример кода
pm.test("Проверка наличия свойства", () => {
    const response = pm.response.json();
    pm.expect(response).to.have.property("id"); // Проверяет, есть ли свойство id
});

pm.test("Проверка статус-кода через have", () => {
    pm.expect(pm.response).to.have.status(200); // Проверяет, что статус-код равен 200
});

4. to.include

Описание: Проверяет, содержит ли строка, массив или объект определённое значение.

Пример кода
pm.test("Проверка строки", () => {
    pm.expect(pm.response.text()).to.include("success"); // Проверяет, есть ли слово "success" в теле ответа
});

pm.test("Проверка массива", () => {
    const response = pm.response.json();
    pm.expect(response.items).to.include(42); // Проверяет, есть ли 42 в массиве items
});

5. to.be.oneOf

Описание: Проверяет, входит ли значение в список допустимых значений.

Пример кода
pm.test("Проверка допустимого значения", () => {
    const response = pm.response.json();
    pm.expect(response.status).to.be.oneOf(["success", "pending", "failed"]); // Проверяет, что status — одно из значений
});

6. to.be.above / to.be.below

Описание: Проверяет, больше ли (above) или меньше ли (below) значение заданного порога.

Пример кода
pm.test("Проверка времени ответа", () => {
    pm.expect(pm.response.responseTime).to.be.below(1000); // Проверяет, что время ответа меньше 1000 мс
});

pm.test("Проверка значения", () => {
    const response = pm.response.json();
    pm.expect(response.count).to.be.above(0); // Проверяет, что count больше 0
});

7. to.be.at.least / to.be.at.most

Описание: Проверяет, больше или равно (at.least) или меньше или равно (at.most) значение заданного порога.

Пример кода
pm.test("Проверка минимального значения", () => {
    const response = pm.response.json();
    pm.expect(response.items.length).to.be.at.least(1); // Проверяет, что длина массива >= 1
});

pm.test("Проверка максимального значения", () => {
    pm.expect(pm.response.responseTime).to.be.at.most(500); // Проверяет, что время ответа <= 500 мс
});

8. to.match

Описание: Проверяет, соответствует ли строка регулярному выражению.

Пример кода
pm.test("Проверка формата email", () => {
    const response = pm.response.json();
    pm.expect(response.email).to.match(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/); // Проверяет формат email
});

pm.test("Проверка URL", () => {
    pm.expect(pm.response.url).to.match(/^https:/); // Проверяет, что URL начинается с https
});

9. to.have.lengthOf

Описание: Проверяет длину строки, массива или объекта.

Пример кода
pm.test("Проверка длины массива", () => {
    const response = pm.response.json();
    pm.expect(response.items).to.have.lengthOf(3); // Проверяет, что в массиве items ровно 3 элемента
});

pm.test("Проверка длины строки", () => {
    const response = pm.response.json();
    pm.expect(response.message).to.have.lengthOf(7); // Проверяет, что длина строки message равна 7
});

10. to.be.empty

Описание: Проверяет, является ли строка, массив или объект пустым.

Пример кода
pm.test("Проверка пустого массива", () => {
    const response = pm.response.json();
    pm.expect(response.errors).to.be.empty; // Проверяет, что массив errors пустой
});

pm.test("Проверка пустой строки", () => {
    const response = pm.response.json();
    pm.expect(response.comment).to.be.empty; // Проверяет, что строка comment пустая
});

11. to.be.ok / to.be.true / to.be.false

Описание: Проверяет логические значения: ok — истина, true — строго true, false — строго false.

Пример кода
pm.test("Проверка успешности", () => {
    const response = pm.response.json();
    pm.expect(response.success).to.be.ok; // Проверяет, что success — истина (true, ненулевое число, непустая строка и т.д.)
});

pm.test("Проверка значения true", () => {
    const response = pm.response.json();
    pm.expect(response.isActive).to.be.true; // Проверяет, что isActive строго true
});

pm.test("Проверка значения false", () => {
    const response = pm.response.json();
    pm.expect(response.hasErrors).to.be.false; // Проверяет, что hasErrors строго false
});

12. to.be.null

Описание: Проверяет, является ли значение null.

Пример кода
pm.test("Проверка на null", () => {
    const response = pm.response.json();
    pm.expect(response.error).to.be.null; // Проверяет, что error равно null
});

Дополнительные ресурсы

Для полного списка методов Chai обратитесь к официальной документации:

Документация Chai (BDD)

Подробнее о тестах в Postman:

Документация Postman по тестам

Школа Тестировщика