У меня есть метод шага Allure для параметризованного теста JUnit 5 и Selenium, который получает объект тестовых данных, содержащий все данные теста для параметризованного теста.
Этот метод основного шага вызывает другие методы подшагов. Подэтап выполняется только в том случае, если его аргумент не равен нулю. Таким образом, я могу контролировать выполнение теста по самим данным теста. Я проверяю нулевое значение в подэтапе, а не в методе основного шага, потому что подэтап может быть вызван из любого теста (я не хочу повторяться).
Пример:
@Step
public void trade(TradeData data) {
enterAmount(data.getAmount());
enterCurrency(data.getCurrency());
}
@Step
public void enterAmount(String amount) {
if (amount != null) {
// do something
}
}
@Step
public void enterCurrency(String currency) {
if (currency != null) {
// do something
}
}
В протоколе испытаний Allure указывается, что подэтапы всегда выполняются.
Для приведенного выше примера оно всегда выглядит так:
торговля
enterAmount
enterCurrency
Только если я нажму на подэтап и увижу, что аргумент был нулевым, я могу сделать вывод, что он не был выполнен. Это не идеально.
Вместо этого я хотел бы, чтобы в отчете отображались только те шаги, которые были выполнены. Предположим, что только «число» равно нулю, тогда это будет выглядеть так:
торговля
enterCurrency
Я могу себе представить, что это было бы возможно, если бы не использовать негибкую аннотацию @Step, а вместо этого вызвать метод Allure в блоке if, чтобы объявить метод как шаг (псевдокод):
public void enterAmount(String amount) {
if (amount != null) {
Allure.context().step();
// do something
}
}
Но возможно ли это как-то с Allure? Я предпочитаю простой способ, чем очень сложный обходной путь.