Введение
Сегодня на рынке существует множество инструментов для тестирования 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, вы можете проверить ответ сервера, даже манипулировать реализацией метода в соответствии с вашими потребностями и можете добавить требуемый тайм-аут к ответу.