我很少使用pytest作爲通用測試運行器,用於在工作中對各種API產品進行大型自動化集成測試,並且我一直在試圖找到一個同樣通用的拆卸函數示例,在完成任何測試後運行,無論成功或失敗。在測試完成時運行的基本pytest拆卸
我的典型應用模式是超線性的,通常是這樣的:
def test_1():
<logic>
assert something
def test_2():
<logic>
assert something
def test_3():
<logic>
assert something
偶爾,當它是有道理這樣做,在我的腳本的頂部,我在一個安裝夾具折騰與autouse參數設置爲「真」上推出每個腳本的運行:
@pytest.fixture(scope="session", autouse=True)
def setup_something():
testhelper = TestHelper
testhelper.create_something(host="somehost", channel="somechannel")
def test_1():
<logic>
assert something
def test_2():
<logic>
assert something
def test_3():
<logic>
assert something
直到最近,一次性搬運工環境都讓我與跳過整個拆除過程脫身,但我在一點點捏現在其中一個不可用的地方。理想情況下,不從我已經使用了相同的線性模式轉向,我將如何實施,它像其他pytest夾具:
@pytest.fixture
def teardown():
testhelper = TestHelper
testhelper.delete_something(thing=something)
的運行完成的時候?
@pytest.fixture
def something(request):
# setup code
def finalize():
# teardown code
request.addfinalizer(finalize)
return fixture_result
或者像我通常用它: