тестирование API с помощью Cypress

Тестирование API в Cypress

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *