При разработке приложений тестирование — очень важный этап, позволяющий убедиться, что созданное нами приложение работает хорошо и так, как ожидалось. Одним из видов тестирования, которое часто проводится, является тестирование 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 часто недооценивают