«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Тестирование API с помощью Cypress: полное руководство

Тестирование API с помощью Cypress: полное руководство

Опубликовано 4 ноября 2024 г.
Просматривать:737

API Testing with Cypress: A Complete Guide

Введение

Cypress широко известен своими возможностями комплексного тестирования, но это также мощный инструмент для тестирования API. Тестирование API является важной частью обеспечения надежности, производительности и безопасности современных веб-приложений, поскольку многие приложения сегодня сильно зависят от серверных служб и API. В этом посте вы познакомитесь с основами тестирования API с использованием Cypress, включая настройку тестов API, создание запросов, проверку ответов и автоматизацию процесса.

Зачем использовать Cypress для тестирования API?

  1. Встроенные функции: Cypress имеет встроенные возможности для создания HTTP-запросов, утверждений и управления асинхронными тестами.
  2. Простая интеграция: Вы можете легко интегрировать тесты API в существующий набор тестов Cypress вместе с тестами пользовательского интерфейса.
  3. Отличный опыт разработки: Cypress предлагает удобный интерфейс, быструю обратную связь и возможность отладки в реальном времени.
  4. Автоматизация: Вы можете автоматизировать тесты API в своем конвейере CI/CD, гарантируя, что API будут последовательно тестироваться при каждом развертывании.

Начало работы с тестированием API в Cypress

Если у вас уже установлен 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 в тестировании API

Вот как вы можете выполнять распространенные 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 требуют аутентификации с помощью токенов или ключей 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 в конвейерах CI/CD

Чтобы обеспечить стабильность ваших 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 с помощью Cypress

Чтобы гарантировать надежность, удобство обслуживания и эффективность ваших тестов API, следуйте этим рекомендациям:

  1. Используйте переменные среды: Храните конфиденциальные данные, такие как ключи API, токены или базовые URL-адреса, в переменных среды.
  2. Имитация ответов там, где это необходимо: Если вы не хотите каждый раз обращаться к реальному API, имитируйте ответы API с помощью cy.intercept().
  3. Обработка ограничений скорости: Если ваш API имеет ограничения скорости, убедитесь, что ваши тесты обрабатывают их соответствующим образом, добавляя повторы или задержки между запросами.
  4. Сохраняйте независимость тестов: Убедитесь, что каждый тест API независим от других, чтобы их можно было запускать в любом порядке без проблем с зависимостями.
  5. Сосредоточьтесь на крайних случаях: Протестируйте как счастливый путь, так и крайние случаи (например, недопустимые входные данные, большие наборы данных, ограничение скорости), чтобы охватить все потенциальные сценарии.

Заключение

Тестирование API — важная часть обеспечения бесперебойной работы вашего приложения, даже если оно зависит от внешних сервисов или серверных API. Cypress предоставляет простой, но мощный способ тестирования API наряду с тестами пользовательского интерфейса, что делает его отличным выбором для разработчиков, работающих с современными приложениями JavaScript. Используя такие функции, как cy.request(), утверждения и интеграцию CI/CD, вы можете создать надежный и надежный набор тестов API, который выявляет проблемы на ранней стадии и обеспечивает качество ваших API.

Начните тестировать свои API с помощью Cypress сегодня и улучшите рабочий процесс разработки с помощью автоматизированных и надежных тестов!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/aswani25/api-testing-with-cypress-a-complete-guide-7p7?1. Если обнаружено какое-либо нарушение прав, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3