在pytest.ini中设置不同的testpath

时间:2018-01-26 15:07:11

标签: python pytest

有没有办法在pytest.init下为我的测试设置不同的testpath。所以我可以执行类似的事情 pytest xx 然后所有测试用例都可以从一组多个直接执行 pytest yy 然后所有测试用例都可以从另一组多个直接执行 pytest all 然后所有测试用例都可以执行

到目前为止,我有。在unitA,unitB,unitC指导下的一组测试和在regressionA,regressionB,regressionC下的另一组测试。所以我不需要输入 pytest unitA,unitB,unitC pytest regressionA,regressionB,regressionC

我的pytest.ini。

[pytest]
testpaths = unitA unitB

1 个答案:

答案 0 :(得分:2)

可以将测试路径作为位置参数传递给pytest。如果您使用* nix,则可以使用shell glob扩展来匹配多个目录:pytest unit*将扩展为pytest unitA unitB unitC。同样,pytest unit{A,C}也会扩展为pytest unitA unitC

但是,如果需要自定义测试过滤或分组逻辑,还可以定义自己的参数。交换机--unit-only的示例,它仅在unit开头的目录中运行测试,忽略testpaths中的pytest.ini设置:

# conftest.py
import pathlib
import pytest

def pytest_addoption(parser):
    parser.addoption('--unit-only', action='store_true', default=False, help='only run tests in dirs starting with "unit".')


def pytest_configure(config):
    unit_only = config.getoption('--unit-only')
    if unit_only:
        config.args = [p for p in pathlib.Path().rglob('unit*') if p.is_dir()]