W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
您可以使用?tmp_path fixture
?,它將為測(cè)試調(diào)用提供一個(gè)在基本臨時(shí)目錄中創(chuàng)建的惟一臨時(shí)目錄。
?Tmp_path
?是一個(gè)?pathlib.path
?對(duì)象。下面是一個(gè)使用測(cè)試的例子:
# content of test_tmp_path.py
CONTENT = "content"
def test_create_file(tmp_path):
d = tmp_path / "sub"
d.mkdir()
p = d / "hello.txt"
p.write_text(CONTENT)
assert p.read_text() == CONTENT
assert len(list(tmp_path.iterdir())) == 1
assert 0
運(yùn)行它會(huì)導(dǎo)致測(cè)試通過,除了我們用來查看值的最后一個(gè) ?assert 0
? 行:
$ pytest test_tmp_path.py
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-7.x.y, pluggy-1.x.y
rootdir: /home/sweet/project
collected 1 item
test_tmp_path.py F [100%]
================================= FAILURES =================================
_____________________________ test_create_file _____________________________
tmp_path = PosixPath('PYTEST_TMPDIR/test_create_file0')
def test_create_file(tmp_path):
d = tmp_path / "sub"
d.mkdir()
p = d / "hello.txt"
p.write_text(CONTENT)
assert p.read_text() == CONTENT
assert len(list(tmp_path.iterdir())) == 1
> assert 0
E assert 0
test_tmp_path.py:11: AssertionError
========================= short test summary info ==========================
FAILED test_tmp_path.py::test_create_file - assert 0
============================ 1 failed in 0.12s =============================
?tmp_path_factory
?是一個(gè)會(huì)話范圍的?fixture
?,可用于從任何其他?fixture
?或測(cè)試創(chuàng)建任意臨時(shí)目錄。
假設(shè)您的測(cè)試套件需要在磁盤上生成一個(gè)大的映像,這個(gè)映像是程序生成的。為每個(gè)測(cè)試計(jì)算相同的圖像,并將其使用到自己的?tmp_path
?中,您可以每次生成一個(gè)圖像,以節(jié)省時(shí)間:
# contents of conftest.py
import pytest
@pytest.fixture(scope="session")
def image_file(tmp_path_factory):
img = compute_expensive_image()
fn = tmp_path_factory.mktemp("data") / "img.png"
img.save(fn)
return fn
# contents of test_image.py
def test_histogram(image_file):
img = load_image(image_file)
# compute and test histogram
?tmpdir
?和 ?tmpdir_factory fixtures
?類似于 ?tmp_path
?和 ?tmp_path_factory
?,但使用/返回舊版 ?py.path.local
? 對(duì)象而不是標(biāo)準(zhǔn) ?pathlib.Pat
?h 對(duì)象。現(xiàn)在,更喜歡使用 ?tmp_path
?和 ?tmp_path_factory
?。
默認(rèn)情況下,臨時(shí)目錄作為系統(tǒng)臨時(shí)目錄的子目錄創(chuàng)建?;久Q將是?pytest-NUM
?,其中?NUM
?將隨著每次測(cè)試運(yùn)行而遞增。此外,超過3個(gè)臨時(shí)目錄的條目將被刪除。
當(dāng)前不能更改條目的數(shù)量,但是使用?--basetemp
?選項(xiàng)將在每次運(yùn)行之前刪除目錄,這意味著只有最近運(yùn)行的臨時(shí)目錄將被保留。
你可以像這樣覆蓋默認(rèn)的臨時(shí)目錄設(shè)置:
pytest --basetemp=mydir
?mydir
的內(nèi)容將被完全刪除,因此請(qǐng)確保僅將目錄用于此目的。
使用 ?pytest-xdist
? 在本地機(jī)器上分發(fā)測(cè)試時(shí),注意為子進(jìn)程自動(dòng)配置一個(gè) ?basetemp
目錄,以便所有臨時(shí)數(shù)據(jù)都位于單個(gè)每次測(cè)試運(yùn)行的 ?basetemp
? 目錄下。
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)系方式:
更多建議: