0

我正在使用 Jenkins 管道并行运行测试,当测试发送到 ReportPortal 时出现问题,它们都在单独的启动中,我想要做的是设置启动名称(准确的启动编号)手动进行测试,因此它们都将在一次启动中进行。

我在这里寻找答案,但只为 NUnit 和 TestNG 找到了一些答案(这对我没有帮助,因为我有单独的程序实例)。我正在使用 Java 主类来运行管道中的每个测试,我读到我可以将启动名称设置为环境变量。可悲的是,我找不到任何信息,它的实施情况如何。我的问题是,是否甚至可以在没有 TestNG 的情况下设置启动名称,如果可以使用环境变量,我应该如何使用 runner 方法中的变量来强制启动名称?

 java -Dmaven.clean.skip=true -Dbrowser=firefox -Dos=linux -jar -Drun.tags=@CreateEntity target/standalone/web-tests.jar

这是我对每个测试的设置(运行标签明显改变),黄瓜的胶水和报告门户的插件在 runner 方法中。

4

1 回答 1

1

TestNG 不是强制性的。在这里你可以找到基于 JVM 的集成配置https://reportportal.io/docs/JVM-based-clients-configuration 这意味着,如果你使用 CucumberJVM(它有 jUnit),你可以使用任何相关的参数。

要指定启动的名称,您可以在reportportal.properties文件中或通过命令行设置它,如-Drp.launch=zzz

但它不会解决多线程的问题。为了将所有并行线程报告到 1 次启动中,您可以通过 2 种方式进行:

  1. launchID跨线程共享。这意味着您可以在 ReportPortal 开始启动(作为测试运行程序的一部分或作为 Jenkins 前步骤 +cUrl请求)。接收launchID并与其他线程/跑步者分享。Runners 将使用这个 id 来发布数据,而不是为每个线程创建新的启动。最后进行后期步骤以完成启动。
  2. 通过 UI 或 API 合并启动。所有执行完成后,您可以通过 UI 合并它们。或者,您可以在并行会话期间收集启动 ID,并且在所有执行完成后,只需运行 API 调用即可合并启动。

与 ReportPortal v1-v4 相关。

对于 ReportPortal 的 5+ 版本,我们计划通过重新运行功能最大限度地减少这项工作。https://github.com/reportportal/reportportal/issues/363

默认情况下,测试运行器将launchID通过本地存储上的文件共享。如果任何其他并行线程将在此环境中启动,launchID则将用于自动报告。

如果你有并行执行,它仍然不会影响这种情况,在多个 VM 上以并行模式启动,但我们也会尝试解决这种情况。

于 2019-10-15T12:26:11.543 回答