1

我有两个互斥的数据夹具,每个夹具都需要不同的测试:

@pytest.fixture(scope='session')
def testdata1(request, conn):
    savepoint = conn.begin_nested()
    request.addfinalizer(savepoint.rollback())
    # load dataset 1

@pytest.fixture(scope='session')
def testdata2(request, conn):
    savepoint = conn.begin_nested()
    request.addfinalizer(savepoint.rollback())
    # load dataset 2

虽然这些都是独立工作的,但在运行需要 testdata2 的测试之前,不会拆除 testdata1 夹具。有什么方法可以确保测试不需要的固定装置在测试期间不活动?

4

1 回答 1

1

由于您将两者的范围指定为“会话”,因此两者都将保持活动状态,直到所有测试结束。您应该指定更严格的范围。我想我明白你想要什么,但我认为期望 pytest 做到这一点是不现实的。

就像是:

testdata1()
test_that_uses_testdata1()
testdata1_finalizer()
test_data2()
test_that_uses_testdata2()
test_something_else()
testdata2_finalizer()
testdata1()
test_something_else_that_uses_testdata1()
testdata1_finalizer()

这似乎对测试系统有很多期望。:)

于 2013-04-05T21:52:50.340 回答