При разработке приложений тестирование – очень важный этап, позволяющий убедиться, что созданное нами приложение работает хорошо и так, как ожидалось. Одним из видов тестирования, которое часто проводится, является тестирование API (Application Programming Interface). Для тестирования API можно использовать несколько инструментов и фреймворков, одним из которых является Cypress.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Что такое Cypress?
Cypress – это легкий и простой в использовании инструмент автоматизации тестирования. Он позволяет тестировать веб-приложения в режиме реального времени и узнавать результаты тестирования напрямую. Кроме того, Cypress можно использовать для тестирования API.
1. Установка Cypress
Прежде всего, нам нужно установить Cypress. Мы можем сделать это с помощью следующей команды в терминале:
npm install cypress --save-dev
После этого мы можем запустить Cypress, используя команду:
npx cypress open
2. Создание тест-кейсов
Запустив Cypress, мы можем создавать тест-кейсы. Это шаги, которые Cypress будет выполнять для проверки API. Вот пример того, как создать тест-кейс с помощью Cypress:
describe('API Testing', () => { it('Get API Testing', () => { cy.request('GET', 'https://jsonplaceholder.typicode.com/posts') .then((response) => { expect(response.status).to.eq(200) expect(response.body).to.not.be.null }) }) })
В примере выше мы создали тест-кейс для проверки GET API. В блоке it
мы используем cy.request
для отправки GET-запроса на сайт. После этого мы проверяем статус HTTP-кода и ответ от тестируемого API.
3. Запуск тест-кейса
После создания тест-кейса мы можем выполнить его, нажав на кнопку запуска в Cypress. После выполнения тестов нужно убедиться, что результаты соответствуют ожиданиям. Результаты тестирования будут представлены в виде отчета.
4. Тестирование и оптимизация
Для улучшения производительности тестов можно оптимизировать тест-кейсы, используя тестирование на основе данных и параметризацию.
- Тестирование на основе данных. Это техника тестирования, которая позволяет использовать различные данные в одном тест-кейсе. Такой вид тестирования позволяет сократить количество необходимых тест-кейсов и упростить процесс тестирования.
- Параметризация. Это техника тестирования, которая позволяет нам использовать различные параметры в одном тест-кейсе.
Пример тестирования на основе данных с использованием Cypress:
const data = [ { id: 1, name: 'John Doe', age: 30 }, { id: 2, name: 'Jane Doe', age: 25 }, { id: 3, name: 'Jim Brown', age: 35 } ] data.forEach((item) => { cy.request('GET', `https://jsonplaceholder.typicode.com/posts/${item.id}`) .then((response) => { expect(response.status).to.eq(200) expect(response.body.id).to.eq(item.id) expect(response.body.title).to.not.be.null }) })
Пример параметризации с использованием Cypress:
const calculator = { add: (a, b) => a + b, subtract: (a, b) => a - b, multiply: (a, b) => a * b, divide: (a,b) => a / b } Object.entries(calculator).forEach(([name, fn]) => { cy.request('POST', 'https://httpbin.org/post', { operation: name, num1: 2, num2: 2 }) .then((response) => { expect(response.status).to.eq(200) expect(response.body.json.args.operation).to.eq(name) expect(response.body.json.args.num1).to.eq(2) expect(response.body.json.args.num2).to.eq(2) expect(response.body.json.data.result).to.eq(fn(2, 2)) }) })
Оптимизация API тестов в Cypress
Для оптимизации API тестирования с использованием данных и параметризации в Cypress, необходимо выполнить следующие шаги:
Тестирование на основе данных:
Тестирование на основе данных — это метод, позволяющий применять разные наборы данных в одном тест-кейсе. Благодаря этому подходу можно сократить количество тестов и упростить процесс тестирования. Чтобы реализовать это с помощью Cypress, мы можем использовать forEach
или map
для повторного запуска тест-кейсов с разными данными.
Вот пример тестирования на основе данных с использованием Cypress:
const data = [ { id: 1, name: 'John Doe', age: 30 }, { id: 2, name: 'Jane Doe', age: 25 }, { id: 3, name: 'Jim Brown', age: 35 } ] data.forEach((item) => { cy.request('GET', `https://jsonplaceholder.typicode.com/posts/${item.id}`) .then((response) => { expect(response.status).to.eq(200) expect(response.body.id).to.eq(item.id) expect(response.body.title).to.not.be.null }) })
В приведенном выше примере мы используем forEach
для повторения тест-кейса с разными данными.
Параметризация:
Параметризация – это техника тестирования, которая позволяет нам использовать различные параметры в одном тест-кейсе. Чтобы реализовать это с помощью Cypress, мы можем использовать Object.entries
или Object.keys
для повторного выполнения тест-кейсов с различными параметрами.
Вот пример параметризации с помощью Cypress:
const calculator = { add: (a, b) => a + b, subtract: (a, b) => a - b, multiply: (a, b) => a * b, divide: (a,b) => a / b } Object.entries(calculator).forEach(([name, fn]) => { cy.request('POST', 'https://httpbin.org/post', { operation: name, num1: 2, num2: 2 }) .then((response) => { expect(response.status).to.eq(200) expect(response.body.json.args.operation).to.eq(name) expect(response.body.json.args.num1).to.eq(2) expect(response.body.json.args.num2).to.eq(2) expect(response.body.json.data.result).to.eq(fn(2, 2)) }) })
В приведенном выше примере мы используем Object.entries
для повторного запуска тест-кейса с различными параметрами. Мы можем изменить параметры в соответствии с нашими требованиями.
Перевод статьи «Cypress API Test».
Пингбэк: Признаемся честно: QA часто недооценивают