W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
有時(shí)測(cè)試函數(shù)不需要直接訪問(wèn)??fixture
??對(duì)象。例如,測(cè)試可能需要使用空目錄作為當(dāng)前工作目錄進(jìn)行操作,但不關(guān)心具體目錄。下面介紹如何使用標(biāo)準(zhǔn)的??tempfile
??和pytest ??fixture
??來(lái)實(shí)現(xiàn)它。我們將??fixture
??的創(chuàng)建分離到一個(gè)??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)
并通過(guò)??usefixtures
??標(biāo)記在測(cè)試模塊中聲明它的使用:
# 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()) == []
對(duì)于??usefixture
??標(biāo)記,在執(zhí)行每個(gè)測(cè)試方法時(shí)需要??cleandir fixture?
?,就像為每個(gè)測(cè)試方法指定了一個(gè)??cleandir
??函數(shù)參數(shù)一樣。讓我們運(yùn)行它來(lái)驗(yàn)證我們的??fixture
??被激活,并且測(cè)試通過(guò):
$ pytest -q
.. [100%]
2 passed in 0.12s
你可以像這樣指定多個(gè)??fixture
??:
@pytest.mark.usefixtures("cleandir", "anotherfixture")
def test():
...
你可以在測(cè)試模塊級(jí)別使用??pytestmark
??來(lái)指定??fixture
??的使用:
pytestmark = pytest.mark.usefixtures("cleandir")
也可以將項(xiàng)目中所有測(cè)試所需的??fixture
??放入一個(gè)?ini?文件中:
# content of pytest.ini
[pytest]
usefixtures = cleandir
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: