首页 > 解决方案 > 是否可以根据 pytest 参数更改 junit_suite_name ?

问题描述

我正在尝试pytest在 Jenkins 上运行时以 JUnit XML 格式创建测试报告。

默认测试套件名称是“pytest”,但我想根据参数值更改名称。

例如,

conftest.py,我有

def pytest_addoption(parser):
    parser.addoption("--site", type=str.upper, action="append", default=[],
                     help="testing site")

我想junit_suite_name根据站点值更改选项。

我阅读了 pytest 文档,但发现您可以像这样更改配置文件中的名称

[pytest]
junit_suite_name = my_suite

或在命令行上,-o junit_suite_name.

但是这样一来,所有测试用例的名称将始终相同。有没有办法有条件地对套件名称进行分组?

谢谢

标签: pythonjunitpytesttest-suite

解决方案


您可以通过设置或更改config.inicfgdict 中的值以编程方式更改 ini 选项。例如,在自定义pytest_configurehookimpl 中进行:

def pytest_configure(config):
    if config.option.site == 'foo':
        config.inicfg['junit_suite_name'] = 'bar'

JUnit 报告中的套件名称现在将bar在您运行时出现pytest --site=foo


推荐阅读