我请你就以下关于诱惑力的问题进行咨询:我使用jenkins + pytest来运行测试。相同的测试运行在多个虚拟机上,这些机器在操作系统(不同的linux发行版)和测试环境方面有所不同。运行测试后,我想将所有计算机的结果合并到一个报告中。- 这里出现了问题-如果我把所有的报告放在一个目录中并生成一个报告,那么来自不同机器的结果将被认为是同一测试的重新运行,并合并成一个。我该怎么办?以便不被合并,从而有可能以某种方式区分出哪种结果来自哪种机器。- 谢谢-谢谢
8xiog9wr1#
我通过覆盖测试/套件的名称来解决这个问题。这意味着你必须做一些代码实现,使用before侦听器,在那里你可以获得当前的测试名称并覆盖它。通过OS +浏览器或其他独特的方式设置测试名称。当您合并报表时,它们将是唯一的并正确显示。
zz2j4svz2#
我遇到了一个类似的问题,Allure将每个并行构建都视为第一个构建的重试。我知道这和pytest不一样,但也许它会有所帮助。我从前面的答案中得到启发,开始尝试。通过更改特性中的场景名称,我能够使Allure将每个并行构建识别为单独的测试。我通过在www.example.com文件中添加一个before_feature方法来实现这environment.py一点,该方法只需将主机名添加到该功能中的每个场景名称中:
before_feature
def before_feature(context, feature): for scenario in feature.scenarios: scenario.name = f'[{socket.gethostname()}] {scenario.name}'
字符串最初,我试图直接更改before_scenario中的scenario.name,但这似乎对Allure没有影响。
before_scenario
scenario.name
wnrlj8wa3#
我使用pytest_addoption来定义捕获设备名称的附加参数,并在conftest.py中添加pytest_collection_modifyitems来修改测试/套件的名称。
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
字符串
3条答案
按热度按时间8xiog9wr1#
我通过覆盖测试/套件的名称来解决这个问题。这意味着你必须做一些代码实现,使用before侦听器,在那里你可以获得当前的测试名称并覆盖它。通过OS +浏览器或其他独特的方式设置测试名称。
当您合并报表时,它们将是唯一的并正确显示。
zz2j4svz2#
我遇到了一个类似的问题,Allure将每个并行构建都视为第一个构建的重试。我知道这和pytest不一样,但也许它会有所帮助。
我从前面的答案中得到启发,开始尝试。通过更改特性中的场景名称,我能够使Allure将每个并行构建识别为单独的测试。我通过在www.example.com文件中添加一个
before_feature
方法来实现这environment.py一点,该方法只需将主机名添加到该功能中的每个场景名称中:字符串
最初,我试图直接更改
before_scenario
中的scenario.name
,但这似乎对Allure没有影响。wnrlj8wa3#
我使用
pytest_addoption
来定义捕获设备名称的附加参数,并在conftest.py
中添加pytest_collection_modifyitems
来修改测试/套件的名称。字符串