W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
有時測試函數不需要直接訪問??fixture
??對象。例如,測試可能需要使用空目錄作為當前工作目錄進行操作,但不關心具體目錄。下面介紹如何使用標準的??tempfile
??和pytest ??fixture
??來實現它。我們將??fixture
??的創(chuàng)建分離到一個??conftest.py
??文件中:
# content of conftest.py
import os
import tempfile
import pytest
@pytest.fixture
def cleandir():
with tempfile.TemporaryDirectory() as newpath:
old_cwd = os.getcwd()
os.chdir(newpath)
yield
os.chdir(old_cwd)
并通過??usefixtures
??標記在測試模塊中聲明它的使用:
# content of test_setenv.py
import os
import pytest
@pytest.mark.usefixtures("cleandir")
class TestDirectoryInit:
def test_cwd_starts_empty(self):
assert os.listdir(os.getcwd()) == []
with open("myfile", "w") as f:
f.write("hello")
def test_cwd_again_starts_empty(self):
assert os.listdir(os.getcwd()) == []
對于??usefixture
??標記,在執(zhí)行每個測試方法時需要??cleandir fixture?
?,就像為每個測試方法指定了一個??cleandir
??函數參數一樣。讓我們運行它來驗證我們的??fixture
??被激活,并且測試通過:
$ pytest -q
.. [100%]
2 passed in 0.12s
你可以像這樣指定多個??fixture
??:
@pytest.mark.usefixtures("cleandir", "anotherfixture")
def test():
...
你可以在測試模塊級別使用??pytestmark
??來指定??fixture
??的使用:
pytestmark = pytest.mark.usefixtures("cleandir")
也可以將項目中所有測試所需的??fixture
??放入一個?ini?文件中:
# content of pytest.ini
[pytest]
usefixtures = cleandir
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: