Я пытаюсь использовать функции огурца в карате для передачи листа Excel/csv в виде файла в разделе «Примеры».

Я пытаюсь использовать «Примеры» в разделе «Схема сценария» файла функций.

В Feature File я попытался представить его в следующем формате. Будет ли это работать, как ожидалось.

Feature: save data to db
Background: no definition
Scenario Outline: to validate file is getting read by example section

Given url 'https://www.googleapis.com/geolocation/v1/geolocate'
And param key = 'AIzaSyB2jt4BQ9McqBXAe8dYcp1CwKf0oGFlWuc'
And def dogs = read('classpath:external_table/json.feature')
And request { "homeMobileCountryCode": '<homeMobileCountryCode>' 
,"homeMobileNetworkCode": '<homeMobileNetworkCode>' } dogs
When method post
And print response
Then status 200

Examples: {'datafile':'src/test/java/external_table/testdata.xlsx'}

person Preethi Ravi    schedule 11.04.2018    source источник


Ответы (3)


Нет, это не будет работать, как ожидалось. Как уже ответил кто-то другой, синтаксис неверен.

Я не понимаю, почему вам нужно снова задавать этот вопрос, когда на него есть ответ здесь: https://stackoverflow.com/a/49727819/143475

Возможно, ваши руководители настаивают на использовании Excel. Позвольте мне сказать, что по опыту гораздо проще использовать нативные примеры Cucumber или возможности Karate, основанные на данных, где вы можете зацикливаться на массиве JSON, см. это: https://github.com/intuit/karate#the-karate-way

Если вы все еще настаиваете на том, что хотите использовать Excel, и не хотите писать небольшую утилиту Java для преобразования Excel (или CSV) в JSON, откажитесь от использования каратэ, это не подходящий инструмент для вас. Всего наилучшего.

person Peter Thomas    schedule 11.04.2018

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

Во-вторых, в таблице примеров нет заголовка, поэтому его можно использовать в качестве заполнителя в шагах сценария.

В-третьих, есть заполнитель '', который кажется одним из определенных в шагах сценария, которого нет в таблице примеров.

Я не знаком с карате, чтобы правильно изменить схему сценария. Обратитесь к этой ссылке, чтобы понять это -- http://www.baeldung.com/cucumber-scenario-outline

person Grasshopper    schedule 11.04.2018

Если вам действительно нужно работать со сценарием с примерами из CSV или Excel, вот способ сделать это.

  1. Назовите свои примеры, в идеале с именем, понятным бизнесу.

  2. Напишите один сценарий, использующий это имя — не используйте схему сценария.

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

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

Scenario: Commpile statistics for premier league teams
  Given I am working with the premier league
  When I compile teams statistics
  Then I should see team statistics
  And there should be no errors

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

Given "I am working with the premier league" do
  @teams = load_premier_league_teams
end

а затем вспомогательный метод

def load_premier_league_teams
  get_the_teams_from_the_spreadsheet
end

Теперь все, что касается работы с электронными таблицами, выполняется вне Cucumber и на вашем языке программирования.

Затем на этапе «Когда» вы можете выполнить свою операцию для каждой из команд следующим образом.

When "I compile the teams statistics" do
  @results = compile_statistics(@teams)
end

и напишите еще один вспомогательный метод

def compile_statistics(teams)
  results = []
  teams.each do |t|
    results << compile_team_stats(t)
  ...
end

Мы снова выталкиваем все детали того, как мы делаем вещи, из Cucumber.

Вы можете сделать то же самое для шага «Не должно быть ошибок», перебирая результаты с помощью переменной @results и собирая все ошибки.

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

person diabolist    schedule 11.04.2018