tmpディレクトリとファイルを使用します
tmp_pathフィクス方法
新バージョン3.9の機能
は、使用できるtmp_path
テストコールのルートディレクトリに一時ディレクトリに別の一時ディレクトリを作成します。
tmp_path
これは、あるpathlib/pathlib2.Path
ターゲット。以下は、そのような試験の使用の一例です。
# test_tmp_path.py文件内容
import os
CONTENT = u"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
これを実行して、我々は、に加えて、ことがわかりますassert 0
。このライン、他のテストは、通常のアサーションによって、次のとおりです。
$ pytest test_tmpdir.py
=========================== test session starts ============================
platform linux -- Python 3.x.y,pytest-4.x.y,py-1.x.y,pluggy-0.x.y
rootdir: $REGENDOC_TMPDIR,inifile:
collected 1 item
test_tmpdir.py F [100%]
================================= FAILURES =================================
_____________________________ test_create_file _____________________________
tmpdir = local('PYTEST_TMPDIR/test_create_file0')
def test_create_file(tmpdir):
p = tmpdir.mkdir("sub").join("hello.txt")
p.write("content")
assert p.read() == "content"
assert len(tmpdir.listdir()) == 1
> assert 0
E assert 0
test_tmpdir.py:7: AssertionError
========================= 1 failed in 0.12 seconds =========================
tmp_path_factoryフィクス方法
新たな機能の2.8バージョンは
tmpdir_factory
、一時的なディレクトリを作成するために使用され、テストケース内の任意の他の固定具からすることができ、固定具セッション範囲です。
たとえば、あなたのテストスイートは、あなたがテストセッション全体ではなく、各ユースケースのために独自に比べて、時間を節約するために、一度だけ生成されることができ、動的に、ローカルディスク上の大きな画像を生成するプログラムを使用する必要がありますと仮定しtmpdir
計算して生成時間:
# conftest.py文件内容
import pytest
@pytest.fixture(scope="session")
def image_file(tmpdir_factory):
img = compute_expensive_image()
fn = tmpdir_factory.mktemp("data").join("img.png")
img.save(str(fn))
return fn
# contents of test_image.py
def test_histogram(image_file):
img = load_image(image_file)
# 计算和测试histogram
詳細については、tmpdir_factory APIを参照してください。
TMPDIRフィクス方法
tmpdir_factoryフィクス方法
デフォルトの一時ディレクトリのルートディレクトリ
デフォルトでは、一時ディレクトリは、サブディレクトリを作成するには、システムの一時ディレクトリです。基本的な名前になりますpytest-数字
番号は、各テスト実行でインクリメントされる場所。また、3番目以降の一時ディレクトリが削除されます。
あなたは次のように、可能デフォルトの一時ディレクトリを変更できます。
pytest --basetemp=mydir
あなたは、ローカルコンピュータ上でテストを配布する場合、pytest
すべての一時的なデータは、個々のテスト実行の一時的なルートディレクトリを収まるように、それは、子プロセスのルートディレクトリに一時ディレクトリを設定します。