2013-04-02 65 views
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 

雖然這些獨立工作時,testdata1夾具沒有運行我的測試,需要testdata2之前拆除。有什麼方法可以確保測試中不需要的燈具在測試期間不活動?

回答

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() 

這真的好像很多期望一個測試系統。 :)

+0

謝謝。猜測這只是zope.testrunner [layers](https://pypi.python.org/pypi/zope.testrunner#layers)和pytest fixtures之間的差異之一。 –