Параметризация метода @BeforeMethod в TestNG - PullRequest
4 голосов
/ 22 марта 2019

У меня есть базовый класс тестирования для моих тестов, который выполняет инициализацию перед каждым тестом.

Вот код

public class BaseTestParameters {

  MyObj myObj;

  @DataProvider(name = "apiType")   
  public static Object[][] createData() {

     return new Object[][] {{"type", "1"},{"type","2"}};   
  } 

  @BeforeMethod()   
  @Factory(dataProvider = "apiType")   
  public void setup(String type,String param) throws Exception {

     myObj = createMyObject(param);

  }
}

Все мои тестовые классы расширяют этот базовый класс, и они используют myObj для тестов.

myObj имеет два разных способа создания (в зависимости от параметра). Все тесты пройдут дважды. Один с каждым способом составления myObj.

Как включить этот сценарий? Использование аннотации @Factory означает, что мне нужно вернуть Object[] из этого метода, но мне не нужно возвращать тестовые классы из этого метода.

1 Ответ

4 голосов
/ 22 марта 2019

Вы можете использовать @Parameters аннотацию, но вы должны указать значения в testng,xml, это означает, что вы должны иметь отдельный testng.xml для каждого набора параметров.

Вот пример:

AppTest.java

public class AppTest {
    @Parameters({"par1", "par2"})
    @BeforeMethod()
    public void setUp(String a, String b) {
        System.out.println("a = [" + a + "], b = [" + b + "]");
    }

    @Test
    public void testApp() {
    }
}

testng.xml * ** 1014 1015 * <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite1" verbose="1" > <test name="Run1" > <parameter name="par1" value="val"/> <parameter name="par2" value="anotherval"/> <packages> <package name="dummy.java" /> </packages> </test> <test name="Run2" > <parameter name="par1" value="newValue"/> <parameter name="par2" value="yetAnotherVal"/> <packages> <package name="dummy.java" /> </packages> </test> </suite>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...