jenkins 将来自多台计算机的诱惑报告合并为一个报告,无需重试

rjjhvcjd  于 2023-08-03  发布在  Jenkins
关注(0)|答案(3)|浏览(126)

我请你就以下关于诱惑力的问题进行咨询:我使用jenkins + pytest来运行测试。相同的测试运行在多个虚拟机上,这些机器在操作系统(不同的linux发行版)和测试环境方面有所不同。运行测试后,我想将所有计算机的结果合并到一个报告中。- 这里出现了问题-如果我把所有的报告放在一个目录中并生成一个报告,那么来自不同机器的结果将被认为是同一测试的重新运行,并合并成一个。我该怎么办?以便不被合并,从而有可能以某种方式区分出哪种结果来自哪种机器。- 谢谢-谢谢

8xiog9wr

8xiog9wr1#

我通过覆盖测试/套件的名称来解决这个问题。这意味着你必须做一些代码实现,使用before侦听器,在那里你可以获得当前的测试名称并覆盖它。通过OS +浏览器或其他独特的方式设置测试名称。
当您合并报表时,它们将是唯一的并正确显示。

zz2j4svz

zz2j4svz2#

我遇到了一个类似的问题,Allure将每个并行构建都视为第一个构建的重试。我知道这和pytest不一样,但也许它会有所帮助。
我从前面的答案中得到启发,开始尝试。通过更改特性中的场景名称,我能够使Allure将每个并行构建识别为单独的测试。我通过在www.example.com文件中添加一个before_feature方法来实现这environment.py一点,该方法只需将主机名添加到该功能中的每个场景名称中:

def before_feature(context, feature):
    for scenario in feature.scenarios:
        scenario.name = f'[{socket.gethostname()}] {scenario.name}'

字符串
最初,我试图直接更改before_scenario中的scenario.name,但这似乎对Allure没有影响。

wnrlj8wa

wnrlj8wa3#

我使用pytest_addoption来定义捕获设备名称的附加参数,并在conftest.py中添加pytest_collection_modifyitems来修改测试/套件的名称。

def pytest_addoption(parser):
  parser.addoption("--udid", action="store", help="UDID of the device")

def pytest_collection_modifyitems(config, items):
  for item in items:
      udid = config.getoption("--udid")
      item.name = udid
      item._nodeid = udid

字符串

相关问题