Тестирование API — одна из основных задач по обеспечению качества. Это помогает нам протестировать ответ до того, как он будет объединен с проектом фронтенд-инженера. Обычно мы используем Postman для тестирования API вручную. На продвинутом уровне мы можем использовать Newman для получения более качественных отчетов. Но у него все еще есть недостатки: мы не можем одновременно реализовывать позитивный и негативный сценарии.

Чтобы решить эту проблему, мы можем создать тестовый сценарий API, используя Javascript. Он предоставляет множество библиотек для создания и автоматизации тестирования API. В этом разделе мы будем использовать фреймворки Mocha, Chai и Supertest. Вот некоторые пояснения по каждому фреймворку:

  • Супертест: Супертест предоставляет абстракцию высокого уровня для тестирования HTTP, в то же время позволяя пользователям перейти к API более низкого уровня, предоставляемому суперагентом.
  • Mocha: Mocha — это многофункциональная среда тестирования JavaScript, работающая на Node.js и в браузере, что делает асинхронное тестирование простым и увлекательным.
  • Chai: Chai — это библиотека утверждений BDD/TDD для узла и браузера, которую можно прекрасно сочетать с любой средой тестирования Javascript.

Обязательное условие

Убедитесь, что вы уже установили Node.js и npm на свой локальный компьютер. Если вы его еще не установили, вы можете сначала установить его
по ссылке: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm

Проект установки

После успешной установки проверьте установку с помощью

$узел-версия

$ npm -версия

Затем создайте новую папку с помощью команды:

$ mkdir API-автоматизация

$ cd API-автоматизация

Инициализируйте проект с настройками по умолчанию.

$ НПМ инициализация

Он создаст файл package.json. Затем установите пакет, используя:

$ НПМ установить

Вот структура папок после установки.

Начало работы

В этом руководстве мы будем использовать API-интерфейсы https://reqres.in/ для входа в систему. У нас есть два сценария для положительных и отрицательных тестов.

1. Установка пакета

Сначала вам необходимо установить библиотеки, используя команду ниже.

$ npm установить супертест

$ npm установить мокко

$ npm установить чай

Затем проверьте зависимости в файле package.json.

2. Создайте новый файл с именем «login.js».

Импортируйте библиотеки Supertest и Chai с помощью приведенных ниже скриптов:

const request = require("supertest");
const { expect } = require("chai");

3. Создайте функцию для хранения конечной точки и полезной нагрузки.

async function login(payload) {
    const response = await request("https://reqres.in")
        .post("/api/login")
        .send(payload)
    return response
}

4. Создайте тестовые сценарии и тестовые примеры.

Добавьте имя вашего сценария в функцию «describe» и имя вашего тестового примера в функцию «it». Вот пример тестового сценария и тестовых случаев.

describe("Login Feature", () => {
    it("Success Login", async () => {
        const payload = {
            "email": "[email protected]",
            "password": "cityslicka"
        }
        const response = await login(payload)

        //ASSERTION
        expect((await response).status).to.equal(200);
    })

    it("Failed Login", async () => {
        const payload = {
            "email": "peter@klaven"
        }
        const response = await login(payload)

        //ASSERTION
        expect((await response).status).to.equal(400);
    })

})

5. Запустите программу

Запустите программу с помощью команды ниже:

$ npx мокко login.js

Если результат теста пройден, вы увидите экран ниже

Или вы также можете добавить команду в скрипты package.json, как показано ниже:

Запустите программу с помощью

$ npm запустить тест

Вот полный сценарий тестирования API для входа на reqres.in.

const request = require("supertest");
const { expect } = require("chai");

async function login(payload) {
    const response = await request("https://reqres.in")
        .post("/api/login")
        .send(payload)
    return response
}

describe("Login Feature", () => {
    it("Success Login", async () => {
        const payload = {
            "email": "[email protected]",
            "password": "cityslicka"
        }
        const response = await login(payload)

        //ASSERTION
        expect((await response).status).to.equal(200);
    })

    it("Failed Login", async () => {
        const payload = {
            "email": "peter@klaven"
        }
        const response = await login(payload)

        //ASSERTION
        expect((await response).status).to.equal(400);
    })

})

Вы также можете добавить больше утверждений в зависимости от ваших потребностей. Полную документацию по утверждениям смотрите здесь: https://www.npmjs.com/package/chai