Pytest権威あるガイド-08 tmpディレクトリやファイルを使用します

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すべての一時的なデータは、個々のテスト実行の一時的なルートディレクトリを収まるように、それは、子プロセスのルートディレクトリに一時ディレクトリを設定します。

おすすめ

転載: www.cnblogs.com/superhin/p/11461758.html