Пошаговое руководство: создание и запуск сценария автоматизации API с помощью Cucumber

В ходе этого пошагового руководства вы создадите сценарий автоматизации BDD с помощью Node.js и Cucumber.js, и этот сценарий будет использоваться для тестирования служб RESTful API.

В этом пошаговом руководстве мы:

  • Создайте сценарий BDD и реализуйте сценарий
  • Макет сервера API
  • Запустите автоматизированный скрипт и просмотрите отчет о тестировании
  • Сделайте тестовые данные управляемыми

API, который мы планируем смоделировать и протестировать, представляет собой API управления пользователями. С помощью этого API вы можете получить имя пользователя с помощью метода «GET», а также обновить имя с помощью метода «PUT».

Чтобы создать скрипт API, вы можете скачать CukeTest как редактор, который находится в cuketest.com.

Вот шаги:

1. Создать проект

  1. Нажмите кнопку «Новый проект», откроется диалоговое окно «Новый проект».
  2. Введите «APITesting» в качестве имени проекта, выберите «API Service» в качестве шаблона и выберите путь к проекту.
  3. Нажмите кнопку «Создать», чтобы создать проект.

2_new_project.png

2. Скачать зависимости

Скрипты Node.js обычно требуют некоторых зависимостей NPM. Зависимости, используемые в этом тестовом проекте API:

  • json-макет: фиктивный сервер API
  • есть: библиотека, которая вызывает API
  • @типы/получил: информация о наборе полученной библиотеки, которая обеспечивает автозаполнение в редакторе

Эти пакеты были предварительно настроены в package.json шаблоном проекта. Чтобы загрузить зависимости, откройте командную строку, нажав кнопку «Открыть командную строку» на панели инструментов, а затем введите npm install команда для установки этих пакетов.

Примечание: у вас должен быть установлен Node.js для использования команды npm. Перейдите на сайт node.js, чтобы узнать больше.

3. Реализовать скрипт

Он состоит из двух частей: функция и код:

  1. файл функций
    создайте новый файл функции в папке «features», имя файла может быть «api_testing.feature» или другое, которое вам нравится, отредактируйте содержимое следующим образом:

2_api_test_feature.png

текст характеристики следующий:

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"
  1. Вы можете удалить файл функций по умолчанию «feature1.feature» и соответствующие определения шагов в файле «definition1.js».

  2. В функции «api_testing.feature» нажмите каждую серую кнопку справа от каждого шага, чтобы сгенерировать для них заглушки кода. Код генерируется в файле «definition1.js». Обратите внимание, что серая кнопка становится оранжевой, когда создаются заглушки определения шага.

  3. Далее реализуйте код следующим образом:

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. Найдите шаги и определения шагов

Вы можете перемещаться между шагами и определениями шагов с помощью следующих действий:

  1. Нажмите зеленую кнопку 2_green_button.png за текстом шага, чтобы открыть код определения шага, соответствующий шагу.
  2. Если вы находитесь в функции определения шага и хотите найти, какой текст шага в файле функции соответствует ей, вы можете щелкнуть правой кнопкой мыши функцию определения шага и выбрать «Найти текст шага», тогда соответствующий текст шага в файле функции будет показаны и выделены.

2_locate_step.png

5. Запустить проект

Для запуска этого проекта нам нужен сервис API, который можно протестировать, с json-mock package, мы можем смоделировать сервер API, ниже приведены шаги:

  1. Сначала мы запустим Mock Server. Щелкните правой кнопкой мыши пустое пространство области проводника проекта и выберите «Показать в окне Cmd» или просто нажмите кнопку «Открыть командную строку» на панели инструментов, оба могут запустить окно CMD. Введите команду npm run json-mock, он должен запустить фиктивную службу. Командное окно выглядит следующим образом:

    2_command_prompt.png

  2. Убедитесь, что фиктивный сервер работает, перейдя к » в своем браузере, который должен показать веб-страницу с сообщением «Поздравляем! Вы успешно запускаете сервер JSON».

  3. После запуска mock-сервера вы можете запустить проект. В CukeTest нажмите кнопку «Запустить проект», чтобы запустить проект, он начнет работать и сгенерирует отчет о тестировании после запуска.

    2_api_run_report.png
    2_api_run_report2.png

Вы можете видеть, что отчет содержит как сводную часть, так и детальную часть.

6. Действия с отчетом об испытаниях

Когда отчет о тестировании сгенерирован и показан, вы можете выполнить некоторые дальнейшие действия с отчетом с помощью панели инструментов над отчетом. Например, вы можете экспортировать отчет в файл PDF или отправить отчет в виде вложения в электронное письмо. Ниже приведены действия, которые можно выполнить:

  1. Нажмите «Сохранить»2_save_button.png кнопку, чтобы сохранить отчет в виде файла PDF.
  2. Нажмите «Открыть папку с файлами». 2_open_button.png кнопка, чтобы открыть в проводнике папку, в которой находится отчет.
  3. Нажмите «Показать в браузере». 2_open_browser_button.png кнопку, чтобы открыть отчет в браузере по умолчанию.
  4. Нажмите «Тема HTML-отчета».2_html_report.png кнопку, чтобы выбрать другую тему для отображения отчета.
  5. Нажмите «Электронная почта»2_email_button.png Кнопка откроет новое окно редактирования электронной почты в Outlook и прикрепит отчет в виде вложения. (только для Windows)

7. Сделайте тестовые данные управляемыми

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

  1. Щелкните правой кнопкой мыши название сценария, выберите «Изменить тип сценария» => «Схема сценария»:

    2_convert_outline.png
    Он преобразует ваш сценарий в схему сценария с параметрами, извлеченными в примерную таблицу:

    2_converted_outline.png

  2. Теперь мы обновляем схему сценария и таблицу примера, чтобы иметь правильное имя параметра и данные:

    а. Измените «param1» на «url» как в тексте шага, так и в заголовке таблицы.

    б. Измените «param2» на «first_name» как в тексте шага, так и в заголовке таблицы. Вы также должны заменить «Susan» в DocString на «». Автоматическое преобразование не заменяет для вас содержимое DocString, поэтому вам нужно сделать это самостоятельно.

    в. Добавьте больше строк данных в примерную таблицу. Вы можете дважды щелкнуть тело таблицы, нажимать вкладки, пока не перейдете к новой строке, а затем заполнить некоторые новые данные, сделать их похожими на первую строку данных, только изменив идентификатор и часть имени. После редактирования весь ваш сценарий выглядит следующим образом:

    2_api_data.png

  3. После повторного запуска тестового проекта вы увидите, что отчет теперь содержит 3 сценария. Для каждой строки в Примере схема сценария будет запущена один раз с заполненными данными строки. Эта возможность предоставляется Cucumber. Вы можете видеть, что в отчете первые два сценария выполняются успешно, а третий терпит неудачу.

    2_api_data_report.png

  4. Откройте файл «data.json» в папке проекта, вы также можете увидеть, что имена первых двух записей json обновлены до «Susan» и «Jason». Итак, мы обнаружили проблему, потому что фиктивный сервер имеет только 2 записи, и когда мы пытаемся обновить 3-ю запись, фиктивный сервер возвращает ошибку «Не найдено». Чтобы пройти тест, вам нужно добавить еще несколько записей. Поэтому скопируйте следующие данные в массив «users» в файле data.json и сохраните их:

     {
       "id": 3
     },
     {
       "id": 4
     }
    

    Примечание: вам нужно перезапустить фиктивный сервер, чтобы изменения вступили в силу.

  5. Затем снова запустите тест, вы должны увидеть, что в отчете все три сценария пройдены. Также открывается файл «data.json» и обратите внимание, что третий объект json также был обновлен сценарием автоматизации и теперь имеет имя «John».

Резюме

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

Похожие записи

Добавить комментарий

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