Как я могу получить доступ к названиям сценариев и примеров в Cucumber?
-
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());
}