我有两个互斥的数据装置,每个数据装置都需要不同的测试:
@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 固定装置不会被拆除。有什么方法可以确保测试不需要的 fixture 在测试期间不处于事件状态?
最佳答案
由于您将两者的范围指定为“ session ”,因此两者都将保持事件状态,直到所有测试结束。 您应该指定更严格的范围。 我想我明白你想要什么,但我认为期望 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()
对于测试系统来说,这确实让人抱有很高的期望。 :)
关于python - 互斥的装置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15775601/