Плагин Cucumber + TestNG + Cucable: Как передать экземпляр драйвера appium, который я создаю в экземпляре @beforemethod, объектам страницы? - PullRequest
0 голосов
/ 20 июня 2019

Вот что я пытаюсь построить:

  1. Тесты на основе огурцов с TestNG Executor
  2. TestNG Executor, чтобы я мог повторно запускать неудачные тесты
  3. Плагин Cucable - чтобы сценарии были разбиты на отдельные файлы, а бегун автоматически генерировался во время выполнения для каждого из сценариев.(Включает параллельное выполнение)

Ниже приведен список участников теста:

@CucumberOptions(
        glue = "com.fifa.stepdefs",
        features = {"target/parallel/features/[CUCABLE:FEATURE].feature"},
        plugin = {"json:target/cucumber-report/[CUCABLE:RUNNER].json"}
)

public class CucableJavaTemplate implements IRetryAnalyzer {

    private int count = 0;
    private static int maxTry = 3;

    @Override
    public boolean retry(ITestResult iTestResult) {
        if (!iTestResult.isSuccess()) {  ;//Check if test not succeed
            if (count < maxTry) {                            //Check if maxtry count is reached
                count++;                                    //Increase the maxTry count by 1
                iTestResult.setStatus(ITestResult.FAILURE);  //Mark test as failed
                return true;                                 //Tells TestNG to re-run the test
            } else {
                iTestResult.setStatus(ITestResult.FAILURE);  //If maxCount reached,test marked as failed
            }
        } else {
            iTestResult.setStatus(ITestResult.SUCCESS);      //If test passes, TestNG marks it as passed
        }
        return false;
    }
    private TestNGCucumberRunner testNGCucumberRunner;

    @BeforeClass(alwaysRun = true)
    public void setUpClass() throws Exception {
        System.out.println("Before Scenario ****");
        testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
    }

    @Test(groups = "cucumber", description = "Runs Cucumber Scenarios", dataProvider = "scenarios",retryAnalyzer = CucableJavaTemplate.class)
    public void scenario(PickleEventWrapper pickleEvent, CucumberFeatureWrapper cucumberFeature) throws Throwable {
        testNGCucumberRunner.runScenario(pickleEvent.getPickleEvent());
    }

    @DataProvider
    public Object[][] scenarios() {
        return testNGCucumberRunner.provideScenarios();
    }

    @AfterClass(alwaysRun = true)
    public void tearDownClass() throws Exception {
        System.out.println("After Scenario ****");
        testNGCucumberRunner.finish();
    }
}

Если я создаю экземпляр драйвера в классе before: как я могу передать его в объектные файлы страницы илифайлы step def?

1 Ответ

0 голосов
/ 26 июня 2019

Я дал аналогичный ответ на этот вопрос: Как сопоставить конкретный файл Java с конкретным файлом объектов в огурце Если вы аннотировали класс драйвера с помощью @ScenarioScoped, то вы можете легко использовать Guice для внедрения этого экземпляра.в других ваших классах.

...