Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как можно распараллелить suite TestNg?


(Sergey356) #1

Всем привет, ситуация следующая. Есть набор тестов, который запускается связкой Maven+TestNg. Каждый тест содержит в себе большое кол-во параметров, и чтобы собрать их в каком то одном месте, был создан suite.xml для каждого теста:

    <!DOCTYPE suite SYSTEM 'http://testng.org/testng-1.0.dtd'>
    
    <suite name = "ParallelTest" verbose = "1">
        <parameter name="browser" value="chrome"></parameter>
        <test name = "ParallelTest">
            <classes>
                <class name = "FirstTest" />
            </classes>
        </test>
    
    </suite>

Для сбора всех таких suite.xml есть общий all_test.xml вида:

    <!DOCTYPE suite SYSTEM 'http://testng.org/testng-1.0.dtd'>
    <suite name="DenZie's test suite" parallel="classes" thread-count="4" verbose="10">
       <suite-files>
            <suite-file path="test1.xml"/>
            <suite-file path="test2.xml"/>
            <suite-file path="test3.xml"/>
            <suite-file path="test4.xml"/>
        </suite-files>    
    </suite>

При запуске, тесты выполняются последовательно. Если вытащить целиком содержимое suite.xml каждого теста и поместить в all_tests.xml, при это поменяв значение parallel=“tests”:

    <suite name="DenZie's test suite" parallel="tests" thread-count="4" verbose="10">
    
       <test name="Test on Chrome">
            <parameter name="browser" value="chrome"></parameter>
            <classes>
                <class name="ThirdTest"></class>
            </classes>
        </test>
         <test name="Test1 on Chrome">
            <parameter name="browser" value="chrome"></parameter>
            <classes>
                <class name="FirstTest"></class>
            </classes>
        </test>
        <test name="Test2 on Chrome">
            <parameter name="browser" value="chrome"></parameter>
            <classes>
                <class name="SecondTest"></class>
            </classes>
        </test>
        <test name="Test3 on Chrome">
            <parameter name="browser" value="chrome"></parameter>
            <classes>
                <class name="ThirdTest"></class>
            </classes>
        </test>
    </suite>

Тесты благополучно стартанут в несколько потоков(4). Отсюда вопрос, есть ли какой нибудь способ распараллелить первый вариант, используя набор suite.xml? Т.к. на деле каждый тест имеет более 20 параметров и получится очень очень весомый all_test.xml.


параллельный запуск тестов WebDriver+Maven
(Александр Таранков) #2

а если в первом случае выставить значение parallel = "tests" вместо classes, они не начнут выполняться параллельно?


(Sergey356) #3

нет, тесты будут выполнять последовательно