Один из способов сделать это - использовать методы BeforeClass and AfterClass
для junit или testng для бегуна. Проблема в том, что в файле объектов может быть только один сценарий, и для него потребуется уникальный класс бегуна.
Иметь метод, запущенный только для первого сценария, запускаемого из схемы сценария, довольно легко. Создайте ловушку перед выполнением только один раз, используя статический флаг. Измените хук «До», чтобы он запускался для определенных тегов и т. Д.
private static boolean skipFlag = false;
@Before
public void beforeHook() {
if(!skipFlag) {
do stuff
skipFlag=true;
}
}
Хотя это хорошо работает с одной схемой сценария в файле объектов. В противном случае вам нужно будет повторить флаги для каждого сценария. При параллельном запуске это может стать грязным.
Лучшее, но немного сложное решение, которое требует разбить таблицу примеров на 3 и присвоить теги верхней и нижней части.
@AftBef
Scenario Outline:
When User Selects <Origin>, <Destination>
@StartIt
Examples:
| Origin | Destination |
| London | New York |
Examples:
| Origin | Destination |
| Munich | Moscow |
| Rome | Shanghai |
@EndIt
Examples:
| Origin | Destination |
| Miami | San Francisco |
Добавьте нижеуказанные методы ловушек с тегами. Вы также можете добавить тег (ы) к средней части
если есть какая-то нестандартная логика.
@Before(value={"@StartIt"})
public void startItAll() {
System.out.println("-----START IT BIRTH BIRTH----");
}
@After(value={"@EndIt"})
public void endItAll() {
System.out.println("-----END IT DIE DIE---------");
}
Если у вас есть только один пример, просто добавьте оба тега к примерам, как показано ниже.
@StartIt @EndIt
Examples:
Необходимо соблюдать осторожность при создании таблицы, чтобы обеспечить наличие только одной примерной строки для тегов @StartIt и @EndIt.