Проблема:
Имеется два документа: краткая анкета и полная анкета. Полную анкету можно создать только на основе кратной. Плюс в этих анкетах есть параметризация (dataProvider). Таким образом у меня есть зависимые тесты. Но проблема возникает как раз на стыке зависимости и параметризации.
Если, например, в сценарии (xml) где полная анкета имеет параметризацию, указывать последовательность тестов так:
<test name="createAppWithEnterMinimumField">
<classes>
<class name="com.multi.dso.CreatePreAppTest">
<methods>
<include name="createPreAppWithNoPatronymicOfPerson"/>
</methods>
</class>
<class name="com.multi.dso.CreateAppTest">
<methods>
<include name="createAppWithEnterMinimumField"/>
</methods>
</class>
</classes>
</test>
То будет создана только одна краткая анкета и несколько полных. А нужно, чтобы они именно совместно были.
Я попыталась протягивать тестовый метод создания краткой анкеты в полную:
public class CreateAppTest extends CreatePreAppTest
И далее уже в тесте создания полной анкеты вызывать тестовый метод создания краткой анкеты:
@TestRailCaseId("139")
@Test(description = "Анкета без доп. информации"
, dataProvider = "getOccupationNameWithoutInfoOfWork"
, dataProviderClass = TestCreateAppData.class
)
public void createAppWithEnterMinimumField(String occupationName) throws Exception {
// Создание краткой анкеты
createPreAppWithNoPatronymicOfPerson();
Таким образом у меня всегда создается краткая анкета для полной. И вкупе с параметризацией это хорошо работает.
Но проблема в том, что этот метод создания краткой анкеты вызывается не как тестовый метод (со всей инициализацией нового браузера и пр) и соответственно я не могу получить результат выполнения этого теста, а так же значения аннотации TestRailCaseId для того, чтобы пушить результат в TestRail. Так же при таком решении есть проблемы с адресной строкой брайзера - не всегда очищается.
Сами автотесты дергаю Gradle таской, которая считывает xml:
task createAppTest(type: Test) {
useTestNG {
...
suites 'src/test/resources/create-app.xml'
}
}
Как правильно решить вопрос зависимости автотестов? Можно ли как-то из одного теста инициировать запуск другого? Какие вообще есть варианты?
Так же бывает проблема, когда нужно в ходе регресса прогнать параметризованный тест только один раз. Как сделать так, чтобы dataProvider срабатывал только единожды?