Cypress широко известен своими возможностями комплексного тестирования, но это также мощный инструмент для тестирования API. Тестирование API является важной частью обеспечения надежности, производительности и безопасности современных веб-приложений, поскольку многие приложения сегодня сильно зависят от серверных служб и API. В этом посте вы познакомитесь с основами тестирования API с использованием Cypress, включая настройку тестов API, создание запросов, проверку ответов и автоматизацию процесса.
Если у вас уже установлен Cypress для сквозного тестирования, вы готовы начать тестирование API. Если нет, выполните следующие действия по установке.
Шаг 1. Установите Cypress
npm install cypress --save-dev
После установки вы можете запустить Cypress с помощью следующей команды:
npx cypress open
Шаг 2. Настройка первого теста API
Cypress предоставляет метод cy.request(), который можно использовать для отправки HTTP-запросов. Вот базовый пример тестирования API, который возвращает список пользователей:
describe('API Testing with Cypress', () => { it('should retrieve a list of users', () => { cy.request('GET', 'https://jsonplaceholder.typicode.com/users') .then((response) => { // Validate the status code expect(response.status).to.eq(200); // Validate the response body expect(response.body).to.have.length(10); expect(response.body[0]).to.have.property('name'); }); }); });
В этом примере мы тестируем запрос GET для получения списка пользователей. Cypress проверяет код состояния ответа и проверяет, содержит ли тело ответа 10 пользователей.
Вот как вы можете выполнять распространенные HTTP-запросы, такие как GET, POST, PUT и DELETE, в Cypress.
GET-запрос
GET-запросы используются для получения данных с сервера. Например:
cy.request('GET', 'https://jsonplaceholder.typicode.com/posts/1') .then((response) => { expect(response.status).to.eq(200); expect(response.body).to.have.property('id', 1); });
POST-запрос
POST-запросы используются для создания новых ресурсов на сервере. Вот как протестировать POST-запрос:
cy.request('POST', 'https://jsonplaceholder.typicode.com/posts', { title: 'New Post', body: 'This is the content of the new post.', userId: 1 }) .then((response) => { expect(response.status).to.eq(201); expect(response.body).to.have.property('title', 'New Post'); });
PUT-запрос
Запросы PUT используются для обновления существующих ресурсов. Пример:
cy.request('PUT', 'https://jsonplaceholder.typicode.com/posts/1', { id: 1, title: 'Updated Post Title', body: 'Updated content', userId: 1 }) .then((response) => { expect(response.status).to.eq(200); expect(response.body).to.have.property('title', 'Updated Post Title'); });
Запрос на удаление
Запросы DELETE используются для удаления ресурсов. Пример:
cy.request('DELETE', 'https://jsonplaceholder.typicode.com/posts/1') .then((response) => { expect(response.status).to.eq(200); });
После того, как вы освоите базовые запросы API, вы можете перейти к более продвинутым методам тестирования API, таким как обработка аутентификации, тестирование сбоев API и объединение вызовов API в цепочку.
Обработка аутентификации
Некоторые API требуют аутентификации с помощью токенов или ключей API. Cypress может обрабатывать аутентификацию, устанавливая собственные заголовки. Например:
cy.request({ method: 'GET', url: 'https://api.example.com/protected', headers: { Authorization: `Bearer ${Cypress.env('auth_token')}` } }) .then((response) => { expect(response.status).to.eq(200); });
Здесь заголовок авторизации используется для отправки токена вместе с запросом.
Ошибки тестирования API
Очень важно проверить, как ведет себя ваш API, когда что-то идет не так, например, из-за неверных входных данных или отсутствия ресурсов. Например, проверка ошибки 404:
cy.request({ method: 'GET', url: 'https://jsonplaceholder.typicode.com/posts/9999', failOnStatusCode: false }) .then((response) => { expect(response.status).to.eq(404); });
Установив errorOnStatusCode: false, Cypress не будет автоматически проваливать тест для ответов, отличных от 2xx, что позволяет вам проверять ошибочные ответы.
Цепочка вызовов API
Иногда вам нужно объединить несколько вызовов API, например, создать ресурс и затем использовать его в последующем тесте:
cy.request('POST', 'https://jsonplaceholder.typicode.com/posts', { title: 'Post for chaining', body: 'Chained post content', userId: 1 }).then((postResponse) => { cy.request('GET', `https://jsonplaceholder.typicode.com/posts/${postResponse.body.id}`) .then((getResponse) => { expect(getResponse.body).to.have.property('title', 'Post for chaining'); }); });
В этом примере запрос POST создает новое сообщение, а запрос GET извлекает это сообщение на основе идентификатора, возвращенного при первом вызове.
Чтобы обеспечить стабильность ваших API, крайне важно запускать тесты API в рамках конвейера непрерывной интеграции/непрерывного развертывания (CI/CD). Cypress можно легко интегрировать в инструменты CI/CD, такие как Jenkins, GitHub Actions или Travis CI.
Вот пример рабочего процесса GitHub Actions, который запускает тесты Cypress при каждом нажатии:
name: CI on: push: branches: - main jobs: test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '14' - name: Install dependencies run: npm install - name: Run Cypress tests run: npx cypress run
Этот рабочий процесс гарантирует автоматическое выполнение тестов API каждый раз, когда код отправляется в основную ветку.
Чтобы гарантировать надежность, удобство обслуживания и эффективность ваших тестов API, следуйте этим рекомендациям:
Тестирование API — важная часть обеспечения бесперебойной работы вашего приложения, даже если оно зависит от внешних сервисов или серверных API. Cypress предоставляет простой, но мощный способ тестирования API наряду с тестами пользовательского интерфейса, что делает его отличным выбором для разработчиков, работающих с современными приложениями JavaScript. Используя такие функции, как cy.request(), утверждения и интеграцию CI/CD, вы можете создать надежный и надежный набор тестов API, который выявляет проблемы на ранней стадии и обеспечивает качество ваших API.
Начните тестировать свои API с помощью Cypress сегодня и улучшите рабочий процесс разработки с помощью автоматизированных и надежных тестов!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3