我有两个互斥的数据夹具,每个都需要不同的测试:
@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夹具并未拆除。有什么方法可以确保在测试期间不需要测试所需的灯具?
答案 0 :(得分:1)
由于您将范围指定为' 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()
对于测试系统来说,这看起来真的很多。 :)