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

StackOverflow https://stackoverflow.com/questions/664415

  •  21-08-2019
  •  | 
  •  

Вопрос

Я использую cucumber для генерации тестовых сценариев, которые могут быть выполнены инструментом или человеком...так что это не стандартное использование.

Однако я хотел бы передать имена сценариев и примеров в свой вывод.

Возможно ли это?

Это было полезно?

Решение

Нашел это..(с некоторой помощью Тима Уокера)

Before do |scenario|
 puts "Before Scenario: #{scenario.to_sexp[2]}"
 .
 .
 .
end

Ваше сексуальное выражение может отличаться, поэтому стоит сделать scenario.to_sexp.inspect чтобы увидеть, что это за дерево.

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

Другие советы

Более серьезный ответ (или, по крайней мере, предложение):используйте отражение ruby, чтобы попытаться найти то, что вы ищете.Возьмите вероятные объекты, выясните, какими методами они обладают, и посмотрите, сможете ли вы это найти.Например:

File.open('happy_hunting.log','a') { |f|
    f.print "Scenario supports: #{(scenario.methods - Object.methods).inspect}\n"
    }

а затем повторите это, чтобы выяснить, что где находится.

Еще одно предложение, посмотрите на источник.

Я сделал кое-что неуместное.Поскольку я использую эту информацию только для отладки, это будет работать пока, пока я не найду что-нибудь получше.

@Before
public void printTestInfoBeforeScenario(Scenario scenario) {
    LOGGER.info("Upcoming Test: "+scenario.getSourceTagNames());
}

@After
public void printTestInfoAfterScenario(Scenario scenario) {
    LOGGER.info("Test Complete: " + scenario.getSourceTagNames() + " Status: " + scenario.getStatus());
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top