如何将配置变量发送到py.test测试?

时间:2014-01-24 10:07:22

标签: python unit-testing pytest

我有一个需要运行多个后端的测试套件。它不是一个简单的参数化测试,因为它适用于整个套件(多个文件/模块)。我可以通过环境来控制运行,但我想知道py.test是否有更明确的方式来表达它。

也就是说,我正在寻找类似的东西:

py.test --set-mode ALPHA

然后在我的测试中我会读到这个值:

if py.test.mode == 'ALPHA':

1 个答案:

答案 0 :(得分:6)

使用pytest_addoption

<强> test_blah.py

def test_something(mode):
    if mode == 'ALPHA':
        assert True
    else:
        assert False

<强> conftest.py

import pytest

def pytest_addoption(parser):
    parser.addoption("--set-mode", action="store", default="ALPHA",
                                help="ALPHA or BETA")

@pytest.fixture
def mode(request):
    return request.config.getoption("--set-mode")

请参阅Pass different values to a test function, depending on command line options