Тестирование 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