【问题标题】:Is it possible to change Allure timeline, so that it will show a different timeline for each Selenium Node?是否可以更改 Allure 时间线,以便为每个 Selenium 节点显示不同的时间线?
【发布时间】:2017-01-12 00:40:02
【问题描述】:

我正在使用由 Selenium Grid 管理的多个 Selenium 节点在 Jenkins 上运行一些 Selenium 测试。对于报告,我使用 Allure 插件。之后很难看到测试在哪个 selenium 节点上运行(目前我使用 Step info 执行此操作,但这样我首先必须单击测试详细信息才能查看它)。

所以我认为改变 Allure Report 中的时间线可能是一个好主意,这样不是所有测试都列在正在执行的 Jenkins master 下,而是每个 Selenium 节点可能有不同的时间线。我没有找到一种方法来做到这一点,或者时间线是在哪里生成的,所以我只是想问这是否可能,如果是,我在哪里可以实现?或者您有任何其他想法如何更清楚地了解测试浏览器是在哪个节点上执行的?

【问题讨论】:

  • 我相信时间线列出了每个线程运行的测试。如果我错了,请纠正我。

标签: allure


【解决方案1】:

确实可以更改时间轴页面的标题。也可以有多个标题。

为每个测试用例创建一个文件。在测试用例描述部分有标签。可以使用多个名称制作标签,但对于时间线,有两个会影响您要查找的内容:

  • 线程
  • 主持人

为每个找到的主机生成一个标题栏,并为每个找到的唯一线程生成一个线程行。对于每个找到的具有该线程的测试用例,在测试用例的持续时间内添加一个块。

测试用例部分在 XML 文件中如下所示:

<test-case severity="None" start="1483868031834" status="passed" stop="1483868031840">
  <description>Test 1</description>
  <name>Test 1</name>
  <labels>
    <label name="thread" value="28216"/>
    <label name="host" value="Apple"/>
    </labels>
  <attachments/>
  ...

文件的其余部分包含步骤,我相信您已经熟悉了。

-- 编辑--

你可以通过调用来实现这个

  Allure.LIFECYCLE.fire(new CustomTestCaseEvent(host));

CustomTestCaseEvent 可能如下所示(可能有更优雅的方式来执行此操作):

public class CustomTestCaseEvent implements TestCaseEvent {
final private String host;
public CustomTestCaseEvent(final String host) {
    this.host = host;
}
@Override
public void process(final TestCaseResult context) {
    for (final Label label : context.getLabels()) {
        if ("host".equals(label.getName())) {
            label.setValue(host);
        }
    }
}
}

【讨论】:

  • 谢谢!受到您的回答的启发,我再次查看了代码并设法按照我的意愿更改了时间线!!您所要做的就是向“Allure.LIFECYCLE”触发一个“TestCaseEvent”,这将更新主机的标签值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多