Пошаговое руководство: создание и запуск сценария автоматизации API с помощью Cucumber
В ходе этого пошагового руководства вы создадите сценарий автоматизации BDD с помощью Node.js и Cucumber.js, и этот сценарий будет использоваться для тестирования служб RESTful API.
В этом пошаговом руководстве мы:
- Создайте сценарий BDD и реализуйте сценарий
- Макет сервера API
- Запустите автоматизированный скрипт и просмотрите отчет о тестировании
- Сделайте тестовые данные управляемыми
API, который мы планируем смоделировать и протестировать, представляет собой API управления пользователями. С помощью этого API вы можете получить имя пользователя с помощью метода «GET», а также обновить имя с помощью метода «PUT».
Чтобы создать скрипт API, вы можете скачать CukeTest как редактор, который находится в cuketest.com.
Вот шаги:
1. Создать проект
- Нажмите кнопку «Новый проект», откроется диалоговое окно «Новый проект».
- Введите «APITesting» в качестве имени проекта, выберите «API Service» в качестве шаблона и выберите путь к проекту.
- Нажмите кнопку «Создать», чтобы создать проект.
2. Скачать зависимости
Скрипты Node.js обычно требуют некоторых зависимостей NPM. Зависимости, используемые в этом тестовом проекте API:
- json-макет: фиктивный сервер API
- есть: библиотека, которая вызывает API
- @типы/получил: информация о наборе полученной библиотеки, которая обеспечивает автозаполнение в редакторе
Эти пакеты были предварительно настроены в package.json шаблоном проекта. Чтобы загрузить зависимости, откройте командную строку, нажав кнопку «Открыть командную строку» на панели инструментов, а затем введите npm install
команда для установки этих пакетов.
Примечание: у вас должен быть установлен Node.js для использования команды npm. Перейдите на сайт node.js, чтобы узнать больше.
3. Реализовать скрипт
Он состоит из двух частей: функция и код:
- файл функций
создайте новый файл функции в папке «features», имя файла может быть «api_testing.feature» или другое, которое вам нравится, отредактируйте содержимое следующим образом:
текст характеристики следующий:
Feature: API Testing Exercise
Call API to change user name
Scenario: Change user name
When send PUT request to "http://127.0.0.1:3000/users/1", the data is
"""
{
"name":"Susan"
}
"""
Then send GET request to "http://127.0.0.1:3000/users/1", user name should be "Susan"
Вы можете удалить файл функций по умолчанию «feature1.feature» и соответствующие определения шагов в файле «definition1.js».
В функции «api_testing.feature» нажмите каждую серую кнопку справа от каждого шага, чтобы сгенерировать для них заглушки кода. Код генерируется в файле «definition1.js». Обратите внимание, что серая кнопка становится оранжевой, когда создаются заглушки определения шага.
Далее реализуйте код следующим образом:
const { Given, When, Then } = require('cucumber');
const got = require('got');
const assert = require('assert');
When(/^send PUT request to "([^"]*)", the data is$/, async function (url, docString) {
var data = {
headers: { 'Content-Type': 'application/json' },
json: true,
body: JSON.parse(docString)
};
await got.put(url, data);
});
Then(/^send GET request to "([^"]*)", user name should be "([^"]*)"$/, async function (url, name) {
let res = await got.get(url);
let json = JSON.parse(res.body);
return assert.equal(json.name, name);
});
Самоочевидно, на этапе «отправить PUT …» он создает запрос JSON и отправляет запрос на URL-адрес, используя PUT
метод, на шаге «отправить GET…» извлеките данные JSON, используя GET
метод, затем убедитесь, что его имя совпадает с именем, которое мы установили на предыдущем шаге.
Обратите внимание, что кнопки рядом с текстом шага становятся зелеными после того, как вы внедрили код.
Если вы реализуете код, скопировав часть кода из статьи в свой редактор, убедитесь, что имена переменных соответствуют сгенерированной по умолчанию заглушке, например, сгенерированные параметры по умолчанию — «arg1», «arg2» и т. д., обновите их до соответствовать содержанию.
4. Найдите шаги и определения шагов
Вы можете перемещаться между шагами и определениями шагов с помощью следующих действий:
- Нажмите зеленую кнопку
за текстом шага, чтобы открыть код определения шага, соответствующий шагу.
- Если вы находитесь в функции определения шага и хотите найти, какой текст шага в файле функции соответствует ей, вы можете щелкнуть правой кнопкой мыши функцию определения шага и выбрать «Найти текст шага», тогда соответствующий текст шага в файле функции будет показаны и выделены.
5. Запустить проект
Для запуска этого проекта нам нужен сервис API, который можно протестировать, с json-mock
package, мы можем смоделировать сервер API, ниже приведены шаги:
Сначала мы запустим Mock Server. Щелкните правой кнопкой мыши пустое пространство области проводника проекта и выберите «Показать в окне Cmd» или просто нажмите кнопку «Открыть командную строку» на панели инструментов, оба могут запустить окно CMD. Введите команду
npm run json-mock
, он должен запустить фиктивную службу. Командное окно выглядит следующим образом:Убедитесь, что фиктивный сервер работает, перейдя к » в своем браузере, который должен показать веб-страницу с сообщением «Поздравляем! Вы успешно запускаете сервер JSON».
После запуска mock-сервера вы можете запустить проект. В CukeTest нажмите кнопку «Запустить проект», чтобы запустить проект, он начнет работать и сгенерирует отчет о тестировании после запуска.
Вы можете видеть, что отчет содержит как сводную часть, так и детальную часть.
6. Действия с отчетом об испытаниях
Когда отчет о тестировании сгенерирован и показан, вы можете выполнить некоторые дальнейшие действия с отчетом с помощью панели инструментов над отчетом. Например, вы можете экспортировать отчет в файл PDF или отправить отчет в виде вложения в электронное письмо. Ниже приведены действия, которые можно выполнить:
- Нажмите «Сохранить»
кнопку, чтобы сохранить отчет в виде файла PDF.
- Нажмите «Открыть папку с файлами».
кнопка, чтобы открыть в проводнике папку, в которой находится отчет.
- Нажмите «Показать в браузере».
кнопку, чтобы открыть отчет в браузере по умолчанию.
- Нажмите «Тема HTML-отчета».
кнопку, чтобы выбрать другую тему для отображения отчета.
- Нажмите «Электронная почта»
Кнопка откроет новое окно редактирования электронной почты в Outlook и прикрепит отчет в виде вложения. (только для Windows)
7. Сделайте тестовые данные управляемыми
Многие тесты API должны передавать различные параметры теста в API, чтобы убедиться, что он работает со всеми этими параметрами. Таким образом, мы можем сделать этот тест управляемым данными. Чтобы сделать его управляемым данными, мы можем преобразовать его в Схема сценария первый. Вот шаги:
Щелкните правой кнопкой мыши название сценария, выберите «Изменить тип сценария» => «Схема сценария»:
Он преобразует ваш сценарий в схему сценария с параметрами, извлеченными в примерную таблицу:Теперь мы обновляем схему сценария и таблицу примера, чтобы иметь правильное имя параметра и данные:
а. Измените «param1» на «url» как в тексте шага, так и в заголовке таблицы.
б. Измените «param2» на «first_name» как в тексте шага, так и в заголовке таблицы. Вы также должны заменить «Susan» в DocString на «
». Автоматическое преобразование не заменяет для вас содержимое DocString, поэтому вам нужно сделать это самостоятельно. в. Добавьте больше строк данных в примерную таблицу. Вы можете дважды щелкнуть тело таблицы, нажимать вкладки, пока не перейдете к новой строке, а затем заполнить некоторые новые данные, сделать их похожими на первую строку данных, только изменив идентификатор и часть имени. После редактирования весь ваш сценарий выглядит следующим образом:
После повторного запуска тестового проекта вы увидите, что отчет теперь содержит 3 сценария. Для каждой строки в Примере схема сценария будет запущена один раз с заполненными данными строки. Эта возможность предоставляется Cucumber. Вы можете видеть, что в отчете первые два сценария выполняются успешно, а третий терпит неудачу.
Откройте файл «data.json» в папке проекта, вы также можете увидеть, что имена первых двух записей json обновлены до «Susan» и «Jason». Итак, мы обнаружили проблему, потому что фиктивный сервер имеет только 2 записи, и когда мы пытаемся обновить 3-ю запись, фиктивный сервер возвращает ошибку «Не найдено». Чтобы пройти тест, вам нужно добавить еще несколько записей. Поэтому скопируйте следующие данные в массив «users» в файле data.json и сохраните их:
{ "id": 3 }, { "id": 4 }
Примечание: вам нужно перезапустить фиктивный сервер, чтобы изменения вступили в силу.
Затем снова запустите тест, вы должны увидеть, что в отчете все три сценария пройдены. Также открывается файл «data.json» и обратите внимание, что третий объект json также был обновлен сценарием автоматизации и теперь имеет имя «John».
Резюме
В этом пошаговом руководстве мы смоделировали службу RESTful API, которая управляет пользователями, а затем протестировали эту службу с помощью тестового сценария BDD, внесли изменения в имя пользователя и затем убедились, что имя действительно изменено.