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

无法为并行运行中的线程生成单独的json报告

徐翔
2023-03-14

尝试为两个线程中的每一个获取单独的json报告,但只获取一个报告,其中包含两个线程的组合执行时间,因为它不是并行运行的。计划在不同设备上运行每个线程,并在获取每个单独设备的报告后运行。有没有办法为每个线程获取自己的json报告?

还尝试过:将maven surefire插件属性与threadcount一起使用,但甚至无法运行并行线程。

我的pom。xml

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M5</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>parallelTests.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>

跑步者

@CucumberOptions(
    plugin = {"pretty",
            "json:target/cucumber_report.json"},
    features = "features/",
    tags = "@test")
public class ParallelRun extends AbstractTestNGCucumberTests {
@Override
@DataProvider(parallel = true)
public Object[][] scenarios() {
    return super.scenarios();
}

测试xml

<suite name="Suite" parallel="tests" thread-count="2">
<test name="Thread 2">
    <classes>
        <class name="ParallelRun">
        </class>
    </classes>
</test>
<test name="Thread 1">
    <classes>
        <class name="ParallelRun">
        </class>
    </classes>
</test>

我试图得到单独的json报告与cucumber场景,步骤,将它们与多个cucumber超文本标记语言记者或其他后,但只有一个json文件与一个线程的报告

共有1个答案

邓阳伯
2023-03-14

为了并行运行测试,您需要创建两个独立的运行器类,其中报告的名称应该不同,以避免覆盖报告。json

步骤1:创建两个单独的TestRunner文件,使用不同的。json文件名

runner1:

@CucumberOptions(
    plugin = {"pretty",
            "json:target/cucumber_report1.json"},
    features = "features/",
    tags = "@test")
public class ParallelRun extends AbstractTestNGCucumberTests {
    @Override
    @DataProvider(parallel = true)
    public Object[][] scenarios() {
        return super.scenarios();
    }

runner2:

@CucumberOptions(
    plugin = {"pretty",
            "json:target/cucumber_report2.json"},
    features = "features/",
    tags = "@test")
public class ParallelRun extends AbstractTestNGCucumberTests {
    @Override
    @DataProvider(parallel = true)
    public Object[][] scenarios() {
        return super.scenarios();
    } 

步骤2:如下所示更新xml文件

测试xml:

<suite name="Suite" parallel="tests" thread-count="2">
<test name="Thread 2">
    <classes>
        <class name="runner1">
        </class>
    </classes>
</test>
<test name="Thread 1">
    <classes>
        <class name="runner2">
        </class>
    </classes>
</test>
 类似资料:
  • 这与我自己的Runner和Filter类以及注释一起,意味着我可以在一个单独的类中运行一个单独的测试,如下所示: 这在Jenkins中也是非常好的,我也能够并行运行测试。我遇到的问题是,每个类的报告在每个方法运行后都会被覆盖。 例如,上面的命令将生成一个文件test-classwithtests.xml,其中包含关于TestMethod的结果和输出的信息。但是,如果我跑

  • 当类与 TestNG 并行运行时,我们不会获得范围报告,但 TestNG 报告会更新。请找到我正在使用的示例代码和版本。如果我们只运行一个类(TestClass1.java),则将生成范围报告。 硒版本3.4.0 范围报告版本:3.0.6 扩展报告库.java 测试类1.java TestClass2.java testng.xml

  • 当我调用foo()时,这个方法是否在单独的线程上运行?

  • 我有一个 docker 17.05.0-ce,在 ubuntu 服务器 16.04 LTS 上构建 89658be。我有一个Postgres在容器中运行并公开端口5432。 我可以从任何地方连接它,除了psql只是超时的同级容器。作为地址,我使用主机的IP。从客户端Ping有效,而psqlconnect无效。 我知道我可以用组合的Postgres服务创建一个docker-compose,但宁愿不这

  • 问题内容: 我在中有我的php脚本文件。何时运行,它运行完美。 我想通过sh文件调用PHP文件,SH文件的位置如下 这是文件的内容是: 当我运行时,它也可以完美运行。 现在,如果我按如下所示设置crontab: 但是,此crontab无法正常工作。 有什么事吗 问题答案: 从注释中可以看出,问题在于您没有定义应使用哪个程序来执行脚本。考虑到cronjob是在很小的环境中执行的;在那里,没有什么可以

  • 是否可以在测试仍在执行时生成报告。通过潘丁 我的pom.xml是这样的 如果我设置<代码>