从命令行中跳过py.test fixture

时间:2014-12-09 20:28:55

标签: python fixtures pytest

鉴于这是我的测试代码:

# conftest.py
@pytest.fixture(scope='function')
def fixA(request)
   pass

@pytest.fixture(scope='function')
def fixB(request)
   pass

# test_my.py
pytestmark = pytest.mark.usefixtures("fixA")

def test_something():
   pass

我希望能够fixB() fixA()使用fixB(),使用[pytest] usefixtures=fixB 很容易,我可以像这样添加pytest.ini:

fixA

但我可以从配置的命令行中弄清楚如何禁用fixA。 到目前为止,我的用例是什么?

(实际原因,我希望{{1}}在我们的CI系统中工作,但对于日常工作,我需要人们能够在他们的桌面上禁用它)

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,(在调试器中对抗之后,py.test文档并没有明确说明如何选择灯具)

将此添加到conftest.py中:

# conftest.py
def pytest_runtest_setup(item):
    for fixture in item.config.getini('ignorefixtures'):
        del item._fixtureinfo.name2fixturedefs[fixture]
        item._fixtureinfo.names_closure.remove(fixture)

def pytest_addoption(parser):
    parser.addini('ignorefixtures', 'fixtures to ignore', 'linelist')

然后我可以把它放在pytest.ini中:

[pytest]
usefixtures=fixB
ignorefixtures=fixA

我也会在命令行中对这些事情很好......