multiple testng.xml 파일 사용

오픈 소스 GitHub 프로젝트에서 Selenium WebDriver 프레임웍의 작동을 보여주기 위한 Java로 생성된 프로젝트를 작업하다가, 프로젝트가 성장하면서, 다양한 테스트를 실행하기 위해 다수의 testng.xml 파일을 생성할 수 있었습니다.

이러한 다수의 파일은 테스트를 구별하기 위해 사용되었으며, 각 웹사이트에 관련된 모든 테스트를 하나의 testng.xml에 배치했습니다. (저는 다양한 데モ 웹사이트를 사용하여 Selenium WebDriver를 사용하여 자동화 할 수 있는 다양한 행위를 보여주는 것입니다.)

이번에는 여러 testng.xml 파일의 사용方法과 테스트를 실행하는 방법에 대해 알려드릴 것이었습니다. 이번에는 Maven이 사용되는 빌드 도구로 프로젝트에서 모든 테스트를 실행하기 위해 하나의 testng.xml 파일이 필요합니다. 또한, 단일 testng.xml 파일로 테스트 실패를 디버깅하는 상황도 있었습니다.

이 프로젝트에서는 9가지 다른 testng.xml 파일을 생성했으며 여러 테스트가 있습니다. 이러한 9가지 다른 testng.xml 파일을 사용하여 하나의 testng.xml 파일로 모든 테스트를 실행할 수 있습니다. 예eeee!

따라서 하나의 testng.xml 파일로 여러 testng.xml 파일을 실행하는 방법을 보여주는 여행을 함께 보냅니다. 또한 9개 중 하나의 testng.xml 파일을 실행하고 명령 行에서 Maven을 사용하여 실행하는 방법에 대해 자세히 설명드릴 것입니다.

하나의 testng.xml 파일로 여러 testng.xml 파일을 실행하는 방법

다음은 모든 9개의 다른 testng.xml 파일로 모든 테스트를 실행하는 것을 중점으로 해봅시다. 이를 해결하기 위해서는 testng.xml 파일에서 <suite-files> </suite-files> 태그를 사용하고 이 태그 사이에 다른 testng.xml 파일의 경로를 제공합니다.以下是我正在谈论的内容의 예제 파일입니다:

XML

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Selenium 4 POC Tests ">
<suite-files>
    <suite-file path="testng-saucedemo.xml"/>
    <suite-file path="testng-automationpractice.xml"/>
    <suite-file path="testng-theinternet.xml"/>
    <suite-file path="testng-juice-shop.xml"/>
    <suite-file path="testng-lambdatestecommerce.xml"/>
    <suite-file path="testng-seleniumgrid-theinternet.xml"/>
    <suite-file path="testng-lambdatest-selenium-playground.xml"/>
    <!--        <suite-file path="testng-seleniumgrid-juiceshop.xml"/>-->
</suite-files>
</suite> 

이 파일을 실행하면 <suite-files> 태그 사이에 업데이트된 순서대로 각각의 testng.xml를 실행합니다. 따라서, “testng-saucedemo.xml” 먼저 실행되고 그 다음으로  “testng-automationpractice.xml”가 실행되며 그런 식입니다.

위 예제에 제공된 모든 testng.xml 파일에는 여러 테스트가 들어 있습니다. 따라서 각각의 testng.xml 안의 모든 테스트가 실행되고 완료 후에 다음 XML 파일이 실행됩니다.

testng-saucedemo.xml  파일의 내용은 다음과 같습니다:

XML

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Sauce Demo Website Tests" parallel="tests" thread-count="4" verbose="2">
<test name="selenium 4 Tests with Chrome Browser">
    <parameter name="browser" value="chrome"/>
    <classes>
        <class name="io.github.mfaisalkhatri.tests.saucedemo.SauceDemoTests">
            <methods>
                <include name="loginSauceDemoTest"/>
                <include name="logOutSauceDemoTest"/>
            </methods>
        </class>
    </classes>
</test> <!-- Test -->
<test name="selenium 4 Tests with Firefox Browser">
    <parameter name="browser" value="firefox"/>
    <classes>
        <class name="io.github.mfaisalkhatri.tests.saucedemo.SauceDemoTests">
            <methods>
                <include name="loginSauceDemoTest"/>
                <include name="logOutSauceDemoTest"/>
            </methods>
        </class>
    </classes>
</test> <!-- Test -->
<test name="selenium 4 Tests with Edge Browser" enabled="false">
    <parameter name="browser" value="edge"/>
    <classes>
        <class name="io.github.mfaisalkhatri.tests.saucedemo.SauceDemoTests">
            <methods>
                <include name="loginSauceDemoTest"/>
                <include name="logOutSauceDemoTest"/>
            </methods>
        </class>
    </classes>
</test> <!-- Test -->
<test name="selenium 4 Tests with Opera Browser" enabled="false">
    <parameter name="browser" value="opera"/>
    <classes>
        <class name="io.github.mfaisalkhatri.tests.saucedemo.SauceDemoTests">
            <methods>
                <include name="loginSauceDemoTest"/>
                <include name="logOutSauceDemoTest"/>
            </methods>
        </class>
    </classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

이 XML 파일에 업데이트된 모든 테스트가 실행되었는지 (통과 여부는 중요하지 않습니다) 그리고 실행이 완료되면 다음 파일이 다른 테스트 세트를 실행하기 위해 선택됩니다.

testng는 suite 파일을 병렬로 실행하는 것을 지원하지 않습니다.

Maven으로 단일 testng.xml 파일 실행하기

IDE에서는 testng.xml 파일을 우클릭하여 테스트 실행 옵션을 선택하여 테스트를 실행할 수 있습니다. 그러나 CI/CD 펑션에서 테스트를 실행할 때, 이러한 옵션은 적용되지 않습니다. 자동화된 펑션 내에서 명령어를 사용하여 테스트를 실행해야 합니다.

IDE에서 테스트 실행 옵션

Maven을 사용하여 testng.xml 파일을 실행하기 위해 다음과 같은 설정을 정의해야 합니다.

Maven Surefire 플러그인을 pom.xml 내에서 更新하십시오.

上面的 截图에서 <SuiteXmlFile>  タグ을 주의 깊게 보세요. suiteXmlFile の 값은 ${suite-xml} 로 세팅되었습니다. 이 宣言의 이 블록에 기본 값을 정의하려면 pom.xml 文件的 properties 区块에서 다음과 같이 정의합니다:

testng.xml의 기본 경로는 이 블로그의 위 节에서 사용한 파일과 일치하며 suite-files 경로를 更新하고 있습니다.

따라서, mvn clean install 또는 mvn clean test 명령어를 실행하면, Maven은 기본 파일 경로를 기반으로 testng.xml  update하고 모든 테스트를 실행합니다.

변환 결과:

현재 생각할 수 있는 질문은 다음과 같습니다: “testng.xml 파일을 실행하고 싶다면 어떻게 해야 하나요? 가능할까요?”

답은 “가능합니다”: 우리는 -Dsuite-xml=<testng.xml 파일 경로>mvn 명령에 추가하여 프로젝트 내의 어떤 testng.xml 파일도 실행할 수 있습니다.

pom.xml 파일의 Maven Surefire 플러그인 블록에서 이 설정을 이전에 설정했던 것을 기억하세요.

명령줄에서 suite-xml 프로퍼티 변수에 값을 전달하면 됩니다. 이는 mvn 명령의 -D 옵션을 사용하여 수행할 수 있습니다:

 
mvn clean test -Dsuite-xml=<testng.xml file path>

지금 명령줄을 사용하여 Maven을 통해 다른 testng.xml 파일을 실행하는 것을 배웠다면 해보겠습니다.

testng-internet.xml 파일을 실행하고 있어야 합니다. 기존의 기본 testng.xml를 재정의하고 명령줄에 전달한 것만 실행되는지 확인하세요. testng.xml가 저장된 전체 경로를 전달해야 합니다. 우리의 경우 test-suite 폴더에 있으므로 전체 경로는 test-suites\testng-theinternet.xml입니다. 다음은 실행할 명령입니다(마블 명령을 실행하기 전에 명령줄 창에서 프로젝트의 루트 폴더 경로에 있어야 합니다):

Plain Text

 

mvn clean test -Dsuite-xml=test-suite\testng-theinternet.xml


“-Dsuite-xml” 옵션은 다음과 같이 다른 Maven 명령과 함께 사용할 수 있습니다: mvn clean install/ mvn clean verify 등

테스트가 성공적으로 실행되었고, 결과는 콘솔에 인쇄되었습니다. 32개의 테스트가 실행되어 성공적으로 통과한 것을 나타냅니다.

correct XML 파일이 선택되고 테스트가 실행되었는지 확인하기 위해, testng-theinternet.xml 파일을 IDE를 사용해 실행하고 실행된 테스트의 개수를 확인합니다.

32개의 테스트가 실행되고 통과하는 것을 볼 수 있으며, 우리가 mvn 명령어를 사용하여 실행한 테스트가 testng.xml 파일에 대해 정확하게 실행되었음을 확인합니다.

결론

我们的项目中,基于不同的模块/网站,可以有多个testng.xml文件来分隔测试,并且这些多个testng.xml文件可以使用单个testng.xml文件来执行。

同样地,我们也可以使用Maven Surefire插件从命令行执行testng.xml文件。

Source:
https://dzone.com/articles/working-with-multiple-testngxml-files