@BeforeTest @AfterTest работает только один раз - PullRequest
0 голосов
/ 24 июня 2018

Я работаю над автоматизацией веб-приложений WhatsApp для практики с использованием selenium-maven-cucumber-testng. У меня есть проблема ниже.

Ожидается: у меня много файлов функций, и я хочу запустить все файлы функций один за другим, как показано ниже:

взять первый файл объекта -> открыть браузер -> выполнить шаги, указанные в файле объекта -> закрыть браузер. взять второй файл объекта -> открыть браузер -> выполнить шаги, указанные в файле объекта -> закрыть браузер и т. д.

Результат: в настоящее время все файлы объектов запускаются и передаются. Но браузер открывается только один раз, т.е.

Открыть браузер -> запустить файл функций 1, файл функций 2 и т. Д. -> Закрыть браузер.

Я хочу запустить, как объяснено в «Ожидается».

My Testng: testng.xml testing.xml

Мой RunnerClass:

Runner.java Runner.java

Мой Крюк:

Hook.java Hook.java

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Вам необходимо заменить крючки TestNG на крючки огурца.Это почему?Потому что вы хотите закрыть браузер после каждого сценария, как вы уточнили в своем вопросе.

Пожалуйста, см. Ниже:

import cucumber.api.java.After;
import cucumber.api.java.Before;

public class Hooks {

@Before
public void beforeScenario(){
    System.out.println("This will run before the Scenario");
}   

@After
public void afterScenario(){
    System.out.println("This will run after the Scenario");
}
}
0 голосов
/ 24 июня 2018

BeforeTest и AfterTest будут выполняться только один раз, поскольку в testng.xml есть только один блок test.Один из способов - создать отдельные элементы для каждого файла объектов и иметь отдельные блоки test.

<test name="Feature_File_1">
    <classes>
      <class name="Runner1"/>
    </classes>
  </test>

  <test name="Feature_File_2">
    <classes>
      <class name="Runner2"/>>
    </classes>
  </test>

Также в текущем классе участников можно удалить аннотацию junit @RunWith.

.
...