Как передать динамический параметр TO testNG.xml запустить несколько тестов - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть xml suite, который отправляет несколько тестов и несколько параметров.

пример:

        <test name="Create">       
        <classes>       
        <class name="TestClass">
            <methods>
                <parameter name="offerId" value="1234"/>
                <include name="testmethod"/>
            </methods>
        </class>                                          
      </classes>
      </test>
        <test name="Add">       
        <classes>       
        <class name="TestClass2">
            <methods>
                <include name="testmethod2"/>
            </methods>
        </class>                                          
      </classes>
      </test>

Мне нужно запустить этот класс несколько раз, каждый раз с другим параметром offerId.(например, 1234,4567,7899)

Я хочу выполнить этот запрос только один раз, и он будет раздражать все другие параметры, снова и снова запускать весь костюм и дать результат натот же отчет.

это то, что я сделал:

@Test
public void runSuites2(){

    TestNG testng = new TestNG();
    List<String> suites=new ArrayList<String>();
    suites.add("c:/tests/testng1.xml");//path to xml..

    testng.setTestSuites(suites);
    testng.run();

}

, так что это загрузит и запустит нужный мне костюм, но как изменить параметр в комплекте?(после этого я создам цикл)

[в настоящее время я продублировал xml и вручную изменил параметр для каждого теста.и затем запустите наборы]

тест:

@Parameters({ "offerId" })
@Test
public void testmethod(String offerId, ITestContext context) throws Exception {
    Reporter.log("offer ID is = " + offerId, true);
        }

1 Ответ

0 голосов
/ 07 февраля 2019

В этом случае вы можете использовать dataprovider или вы можете прочитать значения из Excel, и тесты будут выполняться для каждого значения в dataprovider / excel sheet.
Предоставляет вам пример того, как использовать dataprovider для вашего теста.

@DataProvider(name = "offerId")
public static Object[][] voiceSearchTestData() {
    return new Object[][]{
            {1234},
            {2345},
            {4567}
    };
}

@Test(dataProvider = "offerId")
public void testmethod(int offerId, ITestContext context) throws Exception {
    Reporter.log("offer ID is = " + offerId, true);
}

Таким образом, вышеуказанный тест будет выполнен 3 раза, по одному для каждого значения, представленного в поставщике данных, и вам не нужно ничего параметризировать в xml testng.Вам просто нужно указать имя класса, и все тесты будут выполняться автоматически.Ваш testng.xml должен быть похож на:

<test name="SampleTest">
    <classes>
        <class name="packageName.className" />
    </classes>
</test>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...