Передача нескольких значений для устройств в testng - параллельное мобильное выполнение - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть требование в моем проекте для параллельного запуска набора тестов на нескольких устройствах.Например, мой testng xml выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
  <suite name="Automation" parallel="tests" thread-count="2">
    <test name="RegressionMobileTest_TC01">
        <parameter name="DeviceCapability" value="Android_6.0_Phone/>
        <classes>
            <class name="TestScenarios.WhatIf.TC01_VerifyLaunch" />
        </classes>
    </test> 
     <test name="RegressionMobileTest_TC011">
        <parameter name="DeviceCapability" value="Android_7.0_Tablet" />
        <classes>
            <class name="TestScenarios.TC01_VerifyLaunch" />
        </classes>
    </test>
</suite> 

Мне нужно указать несколько идентификаторов устройства в качестве значения для

<parameter name="DeviceCapability" value="Android_6.0_Phone"/>

Как

<parameter name="DeviceCapability" value="Android_6.0_Phone, Android_6.0_Phone"/>

Так что яможет иметь параллельное выполнение на всех устройствах для всех классов, упомянутых в тесте.Как я могу добиться того же в тестинге.Пожалуйста, предложите.

Заранее спасибо.

1 Ответ

0 голосов
/ 19 декабря 2018

Вам нужно передать параметры поставщику данных вместо того, чтобы передавать testng.xml.

@DataProvider(name="DeviceCapabilityProvider", parallel = true)
    public Object[][] getDataFromDataprovider(){
    return new Object[][] 
        {
            { "Android_6.0_Phone..." },
            { "Android_7.0_Phone..." },
            { "Android_8.0_Phone..." }
        };
    }

Теперь ваш тест должен выглядеть следующим образом:

 @Test(dataProvider="DeviceCapabilityProvider" , dataproviderthreadcount = 3)
    public void testMethod(String myDevice){
    {
      // Create driver here or outside the class

      DesiredCapabilities caps; 
      caps.setCapability(MobileCapabilityType.DEVICE_NAME,myDevice);
      AppiumDriver driver=new AndroidDriver(url,caps);

      // Add test steps
    }

Примечание: В случае, если поставщик данных не учитывал количество потоков, попробуйте использовать threadPoolSize, но он должен работать.

Ссылки:

http://testng.org/doc/documentation-main.html#running-testng https://learn.techbeacon.com/units/how-use-testng-parallel-test-execution https://wiki.saucelabs.com/display/DOCS/Parallel+Testing+in+Java+with+Maven+and+TestNG TestNG параллельное выполнение с DataProvider

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