Автоматизация каратэ: есть ли способ динамически установить имя сценария из файла json

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

В настоящее время я зацикливаю функцию этого json-файла, чтобы установить различные проверки заголовка и тела. Однако было бы полезно, если бы я мог установить имя сценария из файла JSON во время его итерации.

Что-то вроде serverpost.feature

Feature:re-usable feature to publish data

Scenario: TC_NAME  # TC_NAME is avaliable in the JSON data passed to this feature. However, CURRENTLY ITS NOT TAKING THIS DATA FROM JSON FILE.

Given path TC_ID   # TC ID is taken from JSON
Given url 'http://myappurl.com:8080/mytestapp/Servers/Data/uploadServer/'
And request { some: '#(BODY)' }   # Request Body Details is taken from JSON

Пожалуйста, предложите


person Sundan    schedule 27.11.2017    source источник


Ответы (1)


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

В частности, посмотрите на этот: _ 1_. Есть несколько способов создать / использовать таблицу данных. Вместо того, чтобы пытаться поддерживать 2 файла - подумайте о Каратэ как о одновременно вашей таблице данных и выполнении теста. Нет необходимости усложнять еще больше.

Если вы действительно действительно хотите повторно использовать какой-то JSON, который валяется, это зависит от вас, но вы не сможете обновить имя сценария, извините. Я предлагаю просто использовать оператор print, чтобы записать имя в журнал, и оно появится в отчете HTML (см. Документ). Обратите внимание, что при вызове функции в цикле с использованием массива JSON аргумент call УЖЕ включен в отчет, поэтому вам может не понадобиться ничего делать.

Просто наблюдение - ваши вопросы кажутся очень простыми, не могли бы вы прочитать документ и примеры более внимательно, спасибо.

person Peter Thomas    schedule 27.11.2017
comment
Привет, Питер! Мы пытаемся перенести пакет автоматизации контроля качества, написанный на платформе Gauge, на Karate. Поскольку команде требовались минимальные изменения конфигурации, мы создали утилиту миграции для переноса содержимого CSV в формат JSON, который поддерживается карате. Поскольку каждая строка CSV представляет собой один тестовый пример, мы хотели бы видеть TC_NAME в качестве имени сценария в Karate, с помощью которого мы можем достичь соответствия один-к-одному. Сообщите нам, есть ли способ указать данные из json в качестве имени сценария. - person Sundan; 27.11.2017
comment
@Sundan хорошо, вот вопрос к вам. предполагая, что вы можете установить имя сценария, где это поможет вам во время выполнения? - person Peter Thomas; 27.11.2017
comment
В настоящее время в отчетах по огурцам отчет для функции показывает только одно название сценария, хотя функция тестирует разные комбинации заголовков. Если имена сценариев динамически берутся из файла Json для каждого цикла, то в отчете отображаются детали отдельных тестовых примеров, которые выполняются для каждого идентификатора тестового набора. - person Sundan; 27.11.2017
comment
@Sundan, хорошо, вот и плохие новости - в жизненном цикле Cucumber (который использует Karate) нет возможности редактировать / параметризовать имя сценария после того, как функция начинает выполняться (неудивительно). как насчет этого - вместо генерации JSON, почему бы вам не создать очень минимальную функцию карате с несколькими сценариями. иметь всю логику на заднем плане. каждый сценарий просто устанавливает ссылку на необходимую часть JSON. эй, я думаю, это отличная идея. откройте вопрос, если хотите еще раз подумать :) - person Peter Thomas; 27.11.2017