当前位置: 首页 > 知识库问答 >
问题:

并行运行测试时将重写testng-results.xml文件

华升
2023-03-14

当使用TestNg并行运行测试时,报告、emailable和testng-results.xml似乎被重写,只显示最后一个线程的结果,而不是所有线程的组合结果。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke Suite" parallel="tests" thread-count="2">

<groups>
    <run>
        <include name="Smoke"/>
    </run>
</groups>

<test name="1">
    <classes>
        <class name="one">
            <parameter name="executionId" value="UIXTC-"/>
        </class>
    </classes>
</test>

<test name="2">
    <classes>
        <class name="two">
            <parameter name="executionId" value="UIXTC-"/>
        </class>
    </classes>
</test>
</suite>
    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M4</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>src/com/blueoptima/${MODULE}/suiteXmls/${SUITE}Suite.xml</suiteXmlFile>
                </suiteXmlFiles>
                <threadCount>${THREADS}</threadCount>
                <environmentVariables>
                    <PROPERTIES_FILE>${PROPERTIES_FILE}</PROPERTIES_FILE>
                </environmentVariables>
            </configuration>
    </plugin>

示例testng-results.xml输出文件

<?xml version="1.0" encoding="UTF-8"?>
<testng-results ignored="21" total="22" passed="1" failed="0" skipped="0">
<reporter-output>
</reporter-output>
<suite started-at="2021-01-28T18:06:49 IST" name="Smoke Suite" finished-at="2021-01-28T18:10:40 IST" 
duration-ms="230568">
<groups>
  <group name="sanity">
    <method signature="method 2" name="method 2" class="Class 2"/>
    <method signature="method 3" name="method 3" class="Class 3"/>
  </group> <!-- sanity -->
  <group name="Smoke">
    <method signature="method 1" name="method 1" class="Class 1"/>
    <method signature="method 2" name="method 2" class="Class 2"/>
    <method signature="method 3" name="method 3" class="Class 3"/>
  </group> <!-- Smoke -->
</groups>

<test-method signature="method 1" started-at="2021-01-28T18:09:24 IST" name="method 1" data- 
provider="dataProviderForTest" finished-at="2021-01-28T18:10:32 IST" duration-ms="67731" 
status="PASS">
      <params>
        <param index="0">
          <value>
            <![CDATA[{testCaseId=UIXTC-}]]>
          </value>
        </param>
      </params>
      <reporter-output>
      </reporter-output>
    </test-method>

可以看出,它能够识别烟雾套件中的所有3种方法,但只显示了1种方法的结果。

共有1个答案

仉成益
2023-03-14

作为解决此问题的方法,您可以在testng xml中添加junit侦听器(它捕获所有线程),如下所示

<suite name = "Sample Tests">
<listeners>
    <listener class-name="org.uncommons.reportng.JUnitXMLReporter"/>
</listeners>

并使用简单的命令行实用程序PrettyJUnit将junit xml报告转换为汇总的html。

 类似资料:
  • 我试图用TestNG并行运行一个示例测试项目。但它是在一个线程中顺序执行的。我漏掉什么了吗? 谢了。

  • 我正在使用cucumber测试和testng,我计划并行运行测试。我以前有使用testng框架和并行执行的经验,如果不使用mavensurfire插件(pom.xml),我如何实现相同的效果 我的配置, Cucumber JVM,TestNGCucumberRunner。用于触发特性文件的java文件

  • 我正在试验如何与maven surefire和testng并行运行测试。然而,配置似乎不是很简单,我无法让它工作。下面是我的虚拟测试。 这是我的surefire配置: 测试基本上是按顺序运行的。以下是日志作为证据: 我的意图是并行运行所有测试(直到方法级别)。那么,我该如何实现呢?

  • 这是驱动程序类,它将为每个测试方法创建驱动程序实例。

  • 参考 testing tutorial,testing tools reference和advanced testing topics。 本文档分为2个主要单元。首先,我们讲解如何利用Django编写测试.之后,我们讲解如何运行测试。 编写测试 Django的单元测试使用的是Python标准库:unittest。该模块是采用基于类的测试。 unittest2 从 1.7 版本开始不推荐使用 Pyt