Как я могу получить доступ к имени шага Cucumber в определении шага?

Я пытаюсь интегрировать Cucumber с Test Rail. Итак, у меня есть автоматизация Cucumber Ruby.

Я хотел бы иметь возможность передавать шаги Cucumber Gherkin из файла функций в качестве переменной в автоматизацию.

Это потому, что я хотел бы отправить шаги Cucumber Gherkin как HTTP POST в систему управления тестированием.

Пример файла функции корнишона:

Scenario: login scenario
    Given I am on webpage
    When I login
    Then I should see that I am logged in

Код определения шага:

Given(/^I am on webpage$/) do

#do this Given step from the regex match
#but also how do I, some how grab the string 'Given I am on webpage'
#so I can do an HTTP POST on that string

end

Или, может быть, лучший способ: прежде чем я начну какие-либо автоматические тесты, я прохожу какой-то способ проанализировать все файлы функций и отправить HTTP POST в Test Rail, чтобы обновить или заполнить любые новые тесты, которые я добавил в Cucumber. Если это так, как мне это сделать?


person adbarads    schedule 29.04.2015    source источник
comment
Когда у вас есть огурец, системы управления тестированием не нужны. Все это хранится в системе контроля версий, запускается с сервера непрерывной интеграции и создает отчет, который можно сохранить в репозитории. < / а>   -  person Dave McNulla    schedule 02.05.2015


Ответы (2)


Вы можете записать имя шага следующим образом:

Given(/^(I am on webpage)$/) do |step_name|
  puts step_name # or whatever
end

Это работает, даже если шаг принимает аргументы:

Given(/^(I am on (my|your|their) webpage)$/) do |step_name, pronoun|
  puts step_name # or whatever
  visit send("#{pronoun}_path")
end

Тем не менее, я согласен с комментарием Дэйва МакНаллы о том, что контроль версий Cucumber plus не оставляет много работы системе управления тестированием.

Разбор файлов функций звучит как отдельный вопрос.

person Dave Schweisguth    schedule 06.02.2016

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

Два шага:

сначала создайте новый файл с именем hooks.rb в разделе features / support.

touch features/support/hooks.rb

во-вторых, добавьте это содержимое в ваш hooks.rb файл.

Before do |scenario| 
  $step_index = 0
  $stop_count = scenario.test_steps.count
  @scenario = scenario
end

AfterStep do |step|
  if $step_index < $stop_count
    puts "steps: #{@scenario.test_steps[$step_index].text}\n"
  end
  $step_index += 2
end

запустить

cucumber features/XXX.feature

вы увидите, что название шага распечатано на вашем терминале.

person Lucia    schedule 04.01.2018