Введение

Сегодня на рынке существует множество инструментов для тестирования API, таких как Postman, SoapUI, REST Assured и т. д. Доступны и другие аналогичные типы инструментов. По мере того, как в наши дни мы переходим от инструментов мейнфреймов к инструментам на основе JS, даже если они основаны на пользовательском интерфейсе или API, нам доступны многие библиотеки на основе JS, такие как Axios, Request, Supertest и fetch. Cypress — это новый инструмент для тестирования пользовательского интерфейса E2E. Также есть одно важное преимущество: он обеспечивает тестирование API без установки новой библиотеки из пакета npm. Да! Вы не ослышались!

Что такое тестирование, управляемое данными?

Тестирование на основе данных (DDT) — это своего рода подход, который может протестировать ваш тестовый пример с различными входными данными. Эти входные данные могут храниться в виде файлов XLS, XLSX, XML или JSON. Здесь, в этом блоге, мы увидим, как манипулировать массовыми данными через файлы JSON. Вы пишете тестовый пример и хотите запустить его с любым количеством различных входных данных, таким образом получая лучшее покрытие сценария из одного теста.

Настройка проекта

  • Создайте каталог в нужной папке:
mkdir api-automation
  • Установите пакет npm:
npm init
  • Установите Cypress через npm:
npm install cypress - save-dev
  • Запустите команду: npx cypress open , эта команда откроет Cypress и создаст структуру папок Cypress в вашем текущем проекте:

  • Создайте файл спецификации в папке e2c и начните писать свои тестовые примеры.

Пример:

Давайте начнем с некоторых фрагментов кода для каждого метода HTTP.
В этом руководстве я автоматизирую фиктивный REST API (https://jsonplaceholder.typicode.com/) для демонстрации.

Метод публикации. Теперь мы создадим пользователей с несколькими полезными данными запросов, используя подход, основанный на данных. Вставка токена авторизации не является обязательной для этого фиктивного REST API.

  • Создайте файл Json с полезной нагрузкой запроса в папке приспособления, которую мы передаем в качестве параметра в запросе API.
  • Создайте файл Json с выводом в папке приспособлений, с помощью которого мы проверяем наш ответ API с помощью утверждения.

{
    "req":[
        {
            "id": 101,
            "title": "TEST 1",
            "body": "bar",
            "userId": 1
          },
          {
            "id": 101,
            "title": "Test 2",
            "body": "bar",
            "userId": 2
          },
          {
            "id": 101,
            "title": "Test 3",
            "body": "bar",
            "userId": 3
          },
          {
            "id": 101,
            "title": "Test 4",
            "body": "bar",
            "userId": 4
          },
          {
            "id": 101,
            "title": "Test 5",
            "body": "bar",
            "userId": 5
          }
    ]
}
{
    "output":[
        {
            "id": 101,
            "title": "TEST 1",
            "body": "bar",
            "userId": 1
          },
          {
            "id": 101,
            "title": "Test 2",
            "body": "bar",
            "userId": 2
          },
          {
            "id": 101,
            "title": "Test 3",
            "body": "bar",
            "userId": 3
          },
          {
            "id": 101,
            "title": "Test 4",
            "body": "bar",
            "userId": 4
          },
          {
            "id": 101,
            "title": "Test 5",
            "body": "bar",
            "userId": 5
          }
    ]
}
  • В вашем testingApi.cy.js создайте тестовый костюм, который наши тестовые примеры добавят позже.

  • Теперь напишите свой первый тестовый пример, в котором вы читаете файлы из папки с приборами.

  • Теперь напишите свой второй тестовый пример, в котором вызовите наш REST API с несколькими наборами входных данных, что позволит нам использовать подход, основанный на данных, и сохраните ответ в виде массива.

  • В нашем последнем тестовом случае мы убедились, что наш API отвечает через глубокое утверждение.

Наконец-то мы можем протестировать наш REST API с помощью DATA Driven Apprach.

Полный фрагмент кода прикреплен ниже:

describe('API Automation with Data Driven Approach', () => {

    let payload = ''
    let verifyResponse = ''
    let responseArray = []

    it("I read the file for paylaod data and output data which we want verify ", () => {

        cy.readFile('cypress/fixtures/request.json').then((obj) => payload = obj)
        cy.readFile('cypress/fixtures/output.json').then((obj) => verifyResponse = obj)
    })

    it("Make a API call with Post Method with data driven approach", () => {
        for (let i = 0; i < payload.req.length; i++) {
            cy.request({
                method: "POST",
                url: 'https://jsonplaceholder.typicode.com/posts',
                body: payload.req[i],
                headers: {
                    'Content-type': 'application/json; charset=UTF-8',
                    // 'x-api-key': 'YOUR API KEY'  OR
                    // Authorization: `YOUR Access tokken`
                }
            }).then((response) => responseArray.push(response.body))
        }
    })

    it("Now verify the result of REST API", ()=>{
        for (let i = 0; i < verifyResponse.output.length; i++) {
            expect(responseArray[i]).to.deep.equal(verifyResponse.output[i])
        }                
    })



})

Почему мы должны использовать кипарис для тестирования:

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