【问题标题】:Managing multiple test groups in single testng.xml在单个 testng.xml 中管理多个测试组
【发布时间】:2021-05-21 16:16:01
【问题描述】:

在我由testNG 管理的基于Java 的项目中,我有各种各样的测试,每个测试可以属于几个组。假设这些组是“Sanity”、“Regression”、“UI”、“API”、“Integration”、“Module1”、“Module2”、“Module3”等。
例如。 @Test(priority = 7 ,groups= {"Sanity", "Regression", "UI", "Partners"}, description= "Create new partner")
我希望能够在 ChromeFirefoxEdge 浏览器上运行我的测试。
我知道我可以在 testng.xml 中为每个特定组合或每个特定组创建单独的测试,例如

<test verbose="2" preserve-order="true" name="ChromeTests">  
    <parameter name="browser" value="Chrome"/>  
    <classes>  
        <class name="tests.MainRunner">  
        </class>  
    </classes>  
</test>  

Chrome 中运行所有测试,我可以使用

<test verbose="2" preserve-order="true" name="Sanity Tests">
    <groups>
        <run>
            <include name = "Sanity">
            </include>
        </run>
    </groups>
    <classes>
        <class name="tests.MainRunner">
        </class>
    </classes>
</test>

运行“理智”相关的测试,我可以使用

 <test verbose="2" preserve-order="true" name="ChromeTests">
    <parameter name="browser" value="Chrome"/>
    <groups>
        <run>
            <include name = "Sanity">
            </include>
        </run>
    </groups>
    <classes>
        <class name="tests.MainRunner">
        </class>
    </classes>
</test>

在“Chrome”上运行“健全性”测试。
但是我有 3 个浏览器,比如说 10 个测试组。
我认为我不必在 testng.xml 中定义 30 个测试来涵盖我拥有的所有可能的组合。
另外,如何从IntelliJ 内部调用testng.xml 中的特定测试?

【问题讨论】:

    标签: java selenium intellij-idea testng


    【解决方案1】:

    只需将您的组拆分为几个单独的 .xml 文件 - Sanity.xmlRegression.xml 等。 然后执行以下操作:

    <?xml version = "1.0" encoding = "UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    
    <suite name="Regression">
    
      <test name="Regression Suite">
    
        <groups>
          <run>
            <include name="Regression"/>
          </run>
        </groups>
    
        <packages>
          <package name="com.auto.test.*"/>
        </packages>
    
      </test>
    
    </suite>
    

    然后你需要像这样更新你的 pom.xml:

    <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
              <suiteXmlFiles>
                <!--suppress UnresolvedMavenProperty -->
              <suiteXmlFile>src/test/resources/suites/${suite}.xml</suiteXmlFile>
              </suiteXmlFiles>
            </configuration>
          </plugin>
    

    然后,每当您在 Maven 中运行测试时,您都必须像这样传递套件文件名:

    mvn clean test -Dsuite=Regression
    

    【讨论】:

      【解决方案2】:

      请查看以下问题的实现:https://youtrack.jetbrains.com/issue/IDEA-115242 它应该能够运行以逗号分隔的多个组:

      【讨论】:

      • 我不明白你的回答。我应该选择什么“组”单选按钮和“套件”单选按钮?如何以及在哪里?
      • 运行/调试配置中的TestNG运行/调试配置选项。
      • 啊,现在我明白了,谢谢!这确实有助于并回答了我的最后一个问题,但不是我问的主要问题。顺便问一下,您能否告诉我是否可以根据我在 tesng.xml 文件中定义的测试来设置运行配置?目前我看到了根据 1) all in package 2)Class 3)Method 4)Group 5)Suite 6)Pattern 设置运行的能力(我仍然不知道这种模式是什么)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多