Search code examples
javaautomationparallel-processingtestngtestng.xml

Don't want to run Setup test classes in parallel and rest File In parallel in TESTNG


I was Trying To make a test Suite for My automation I have Create The testng.xml file .

In That file I have 2 sections 1 is Setup and the other is Execution. Want to run Setup without parallel and After Setup completion Execution part Should run in parallel.

Sample Of TestNG.xml

    <suite name="sample" parallel="test" thread=3>
    //Setup Test Runs in the begin without parallel 
    <test name="Setup">
    
    <classes>
    <class name="A"/>
    <class name="B"/>
    </classes>
    
    </test>
    
    // Below tests to be ran in parallel.
    <test name "execution" ><classes><class name="X1"/><class name="X2"/><class name="X3"/>/classes></test>
    <test name "execution2" ><classes><class name="Y1"/><class name="Y1"/></classes></test>
 <test name "execution3"><classes><class name="Z1/><class name="Z1"/></classes></test>
    </suite>

Solution

  • The parallel attribute on the <suite> tag will be applied for the hole file.

    You have to split multiple parallel configurations on several files and use all in the next way:

    1 Create setup.xml with parallel="none"

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
    <suite name="Run-Setup" parallel="none">
        <test name="Setup">
            <classes>
                <class name="A"/>
                <class name="B"/>
            </classes>
        </test>
    </suite>
    

    2 Create execution.xml with parallel="tests" thread-count="3":

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
    <suite name="Run-Executions" parallel="tests" thread-count="3">
        <test name "execution" >
            <classes>
                <class name="X1"/>
                <class name="X2"/>
                <class name="X3"/>
            </classes>
        </test>
        <test name "execution2" >
            <classes>
                <class name="Y1"/>
                <class name="Y2"/>
            </classes>
        </test>
        <test name "execution3">
            <classes>
                <class name="Z1"/>
                <class name="Z2"/>
            </classes>
        </test>
    </suite>
    

    3 Create master-testng-suite.xml which refers all of them:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
    <suite name="Run-all-testNG-files">
        <suite-files>
            <suite-file path="setup.xml"/>
            <suite-file path="execution.xml"/>
        </suite-files>
    </suite>
    

    4 Run master-testng-suite.xml


    Reference

    https://testng.org/doc/documentation-main.html#parallel-running