API リファレンス¶
このページには pytest の API に関する完全なリファレンスが含まれています。
定数¶
pytest.__version__¶
現在の pytest のバージョンを文字列として:
>>> import pytest
>>> pytest.__version__
'7.0.0'
pytest.version_tuple¶
Added in version 7.0.
現在の pytest のバージョンをタプルとして:
>>> import pytest
>>> pytest.version_tuple
(7, 0, 0)
プレリリースの場合、最後の要素はプレリリースバージョンの文字列になります:
>>> import pytest
>>> pytest.version_tuple
(7, 0, '0rc1')
関数¶
pytest.approx¶
- approx(expected, rel=None, abs=None, nan_ok=False)[ソース]¶
2 つの数値 (または順序付けられた数値のシーケンス) がある許容範囲内で互いに等しいことをアサートします。
Floating-Point Arithmetic: Issues and Limitations により、直感的に等しいと期待される数値が常にそうであるとは限りません:
>>> 0.1 + 0.2 == 0.3 False
この問題はテストを書くときによく遭遇します。 例えば、浮動小数点値が期待通りであることを確認する場合です。 この問題に対処する方法の一つは、2 つの浮動小数点数が適切な許容範囲内で等しいことをアサートすることです:
>>> abs((0.1 + 0.2) - 0.3) < 1e-6 True
しかし、このような比較は書くのが面倒で理解しにくいです。 さらに、上記のような絶対比較は通常推奨されません。 なぜなら、すべての状況にうまく適用できる許容範囲がないからです。
1e-6は1の周りの数値には良いですが、非常に大きな数値には小さすぎ、非常に小さな数値には大きすぎます。 許容範囲を期待値の分数として表現する方が良いですが、そのような相対比較は正確かつ簡潔に書くのがさらに難しいです。approxクラスは、できるだけ直感的な構文を使用して浮動小数点の比較を行います:>>> from pytest import approx >>> 0.1 + 0.2 == approx(0.3) True
同じ構文は、順序付けられた数値のシーケンスにも適用されます:
>>> (0.1 + 0.2, 0.2 + 0.4) == approx((0.3, 0.6)) True
numpy配列:>>> import numpy as np >>> np.array([0.1, 0.2]) + np.array([0.2, 0.4]) == approx(np.array([0.3, 0.6])) True
そして、スカラーに対する
numpy配列:>>> import numpy as np >>> np.array([0.1, 0.2]) + np.array([0.2, 0.1]) == approx(0.3) True
approxはシーケンスの相対位置を曖昧さなく推測する必要があるため、順序付けられたシーケンスのみがサポートされます。 これは、setsや他の順序付けられていないシーケンスはサポートされないことを意味します。最後に、辞書の 値 も比較できます:
>>> {'a': 0.1 + 0.2, 'b': 0.2 + 0.4} == approx({'a': 0.3, 'b': 0.6}) True
両方のマッピングが同じキーを持ち、それぞれの値が期待される許容範囲に一致する場合、比較は真となります。
許容範囲
デフォルトでは、
approxは期待値の1e-6(すなわち百万分の一) の相対許容範囲内の数値を等しいと見なします。 この処理は、期待値が0.0の場合に驚くべき結果をもたらします。 なぜなら、0.0自体以外は0.0に相対的に近いものはないからです。 このケースを驚かせないように処理するために、approxは期待値の1e-12の絶対許容範囲内の数値も等しいと見なします。 無限大と NaN は特別なケースです。 無限大は相対許容範囲に関係なく、それ自体としか等しく見なされません。 NaN はデフォルトでは何とも等しく見なされませんが、nan_ok引数を True に設定することでそれ自体と等しく見なすことができます。 (これは、NaN を「データなし」を意味するために使用する配列を比較するのを容易にすることを目的としています。)相対許容範囲と絶対許容範囲の両方は、
approxコンストラクタに引数を渡すことで変更できます:>>> 1.0001 == approx(1) False >>> 1.0001 == approx(1, rel=1e-3) True >>> 1.0001 == approx(1, abs=1e-3) True
absを指定してrelを指定しない場合、比較は相対許容範囲を全く考慮しません。 言い換えれば、デフォルトの相対許容範囲1e-6内にある 2 つの数値は、指定された絶対許容範囲を超える場合、依然として等しくないと見なされます。absとrelの両方を指定した場合、いずれかの許容範囲が満たされれば数値は等しいと見なされます:>>> 1 + 1e-8 == approx(1) True >>> 1 + 1e-8 == approx(1, abs=1e-12) False >>> 1 + 1e-8 == approx(1, rel=1e-6, abs=1e-12) True
approxを使用して非数値型、または非数値型を含む辞書やシーケンスを比較することもできます。 その場合、厳密な等価性に戻ります。 これは、オプションの値を含む可能性のある辞書やシーケンスを比較するのに役立ちます:>>> {"required": 1.0000005, "optional": None} == approx({"required": 1, "optional": None}) True >>> [None, 1.0000005] == approx([None,1]) True >>> ["foo", 1.0000005] == approx([None,1]) False
approxを使用することを考えている場合、浮動小数点数を比較する他の良い方法とどのように比較されるかを知りたいかもしれません。 これらのアルゴリズムはすべて相対許容範囲と絶対許容範囲に基づいており、ほとんどの場合一致するはずですが、意味のある違いがあります:math.isclose(a, b, rel_tol=1e-9, abs_tol=0.0): 相対許容範囲がaまたはbのいずれかに対して満たされるか、絶対許容範囲が満たされる場合に True です。 相対許容範囲はaとbの両方に対して計算されるため、このテストは対称的です (つまり、aもbも「基準値」ではありません)。0.0と比較する場合は、絶対許容範囲を指定する必要があります。 デフォルトでは許容範囲がないためです。 詳細情報:math.isclose().numpy.isclose(a, b, rtol=1e-5, atol=1e-8):aとbの差がbに対する相対許容範囲と絶対許容範囲の合計より小さい場合に True です。 相対許容範囲はbに対してのみ計算されるため、このテストは非対称であり、bを基準値と見なすことができます。 シーケンスの比較のサポートはnumpy.allclose()によって提供されます。 詳細情報: numpy.isclose.unittest.TestCase.assertAlmostEqual(a, b):aとbが絶対許容範囲1e-7内にある場合に True です。 相対許容範囲は考慮されないため、この関数は非常に大きな数値や非常に小さな数値には適していません。 また、unittest.TestCaseのサブクラスでのみ利用可能であり、PEP8 に従っていないため見た目が悪いです。 詳細情報:unittest.TestCase.assertAlmostEqual().a == pytest.approx(b, rel=1e-6, abs=1e-12): 相対許容範囲がbに対して満たされるか、絶対許容範囲が満たされる場合に True です。 相対許容範囲はbに対してのみ計算されるため、このテストは非対称であり、bを基準値と見なすことができます。 絶対許容範囲を明示的に指定し、相対許容範囲を指定しない特別な場合には、絶対許容範囲のみが考慮されます。
注釈
approxは numpy 配列を処理できますが、比較、NaN、または ULP ベースの許容範囲のサポートが必要な場合は、Test support (numpy.testing) の専門のテストヘルパーをお勧めします。正規表現を使用して文字列を一致させるには、re_assert パッケージ の Matches を使用できます。
警告
バージョン 3.2 で変更.
一貫性のない動作を避けるために、
>,>=,<および<=比較ではTypeErrorが発生します。 以下の例は問題を示しています:assert approx(0.1) > 0.1 + 1e-10 # calls approx(0.1).__gt__(0.1 + 1e-10) assert 0.1 + 1e-10 > approx(0.1) # calls approx(0.1).__lt__(0.1 + 1e-10)
2 番目の例では
approx(0.1).__le__(0.1 + 1e-10)が呼び出されることを期待します。 しかし、代わりにapprox(0.1).__lt__(0.1 + 1e-10)が比較に使用されます。 これは、リッチ比較の呼び出し階層が固定された動作に従うためです。 詳細情報:object.__ge__()バージョン 3.7.1 で変更:
approxは、非数値型の辞書値またはシーケンス要素に遭遇した場合にTypeErrorを発生させます。バージョン 6.1.0 で変更:
approxはTypeErrorを発生させる代わりに、非数値型に対して厳密な等価性に戻ります。
pytest.fail¶
チュートリアル: 成功しないテストを処理するために skip と xfail を使用する方法
- fail(reason[, pytrace=True])[ソース]¶
指定されたメッセージで実行中のテストを明示的に失敗させます。
- パラメータ:
- 例外:
pytest.fail.Exception -- 発生する例外。
- class pytest.fail.Exception¶
pytest.fail()によって発生する例外。
pytest.skip¶
- skip(reason[, allow_module_level=False])[ソース]¶
指定されたメッセージで実行中のテストをスキップします。
この関数はテスト中 (セットアップ、コール、またはティアダウン) または
allow_module_levelフラグを使用してコレクション中にのみ呼び出す必要があります。 この関数は doctests でも呼び出すことができます。- パラメータ:
- 例外:
pytest.skip.Exception -- 発生する例外。
注釈
プラットフォームや依存関係が一致しないなどの特定の条件下でテストをスキップすることを宣言するには、可能な限り pytest.mark.skipif マーカーを使用する方が良いです。 同様に、doctest を静的にスキップするには
# doctest: +SKIPディレクティブを使用します (doctest.SKIPを参照)。
- class pytest.skip.Exception¶
pytest.skip()によって発生する例外。
pytest.importorskip¶
- importorskip(modname, minversion=None, reason=None, *, exc_type=None)[ソース]¶
要求されたモジュール
modnameをインポートして返すか、モジュールをインポートできない場合は現在のテストをスキップします。- パラメータ:
modname (str) -- インポートするモジュールの名前。
minversion (str | None) -- 指定された場合、インポートされたモジュールの
__version__属性は少なくともこの最小バージョンでなければなりません。 そうでない場合、テストはスキップされます。reason (str | None) -- 指定された場合、モジュールをインポートできないときにこの理由がメッセージとして表示されます。
exc_type (type[ImportError] | None) -- モジュールをスキップするためにキャプチャする必要がある例外。
ImportErrorまたはそのサブクラスでなければなりません。 モジュールをインポートできてもImportErrorが発生した場合、pytest はユーザーに警告を発します。 多くの場合、ユーザーはモジュールが見つからないことを期待しています (この場合はModuleNotFoundErrorが発生します)。 この警告はexc_type=ImportErrorを明示的に渡すことで抑制できます。 詳細は pytest.importorskip default behavior regarding ImportError を参照してください。
- 戻り値:
インポートされたモジュール。 これはその標準名に割り当てる必要があります。
- 例外:
pytest.skip.Exception -- モジュールをインポートできない場合。
- 戻り値の型:
例:
docutils = pytest.importorskip("docutils")
Added in version 8.2:
exc_typeパラメータ。
pytest.xfail¶
- xfail(reason='')[ソース]¶
指定された理由で実行中のテストまたはセットアップ関数を強制的に xfail します。
この関数はテスト中 (セットアップ、コール、またはティアダウン) にのみ呼び出す必要があります。
xfail()を使用した後、他のコードは実行されません (これは内部的に例外を発生させることで実装されています)。- パラメータ:
reason (str) -- xfail の理由としてユーザーに表示するメッセージ。
注釈
既知のバグや欠落している機能などの特定の条件下でテストを xfail することを宣言するには、可能な限り pytest.mark.xfail マーカーを使用する方が良いです。
- 例外:
pytest.xfail.Exception -- 発生する例外。
- class pytest.xfail.Exception¶
pytest.xfail()によって発生する例外。
pytest.exit¶
- exit(reason[, returncode=None])[ソース]¶
テストプロセスを終了します。
- パラメータ:
reason (str) -- pytest を終了する理由として表示するメッセージ。 reason は
msgが非推奨であるためにのみデフォルト値を持ちます。returncode (int | None) -- pytest を終了するときに使用されるリターンコード。 None は
0(エラーなし) と同じ意味です。sys.exit()と同じです。
- 例外:
pytest.exit.Exception -- 発生する例外。
- class pytest.exit.Exception¶
pytest.exit()によって発生する例外。
pytest.main¶
チュートリアル: Python コードから pytest を呼び出す
pytest.param¶
- param(*values[, id][, marks])[ソース]¶
pytest.mark.parametrize 呼び出しや parametrized fixtures でパラメータを指定します。
@pytest.mark.parametrize( "test_input,expected", [ ("3+5", 8), pytest.param("6*9", 42, marks=pytest.mark.xfail), ], ) def test_eval(test_input, expected): assert eval(test_input) == expected
- パラメータ:
values (object) -- パラメータセットの値の可変引数を順番に。
marks (MarkDecorator | Collection[MarkDecorator | Mark]) -- このパラメータセットに適用される単一のマークまたはマークのリスト。
id (str | None) -- このパラメータセットに付与する ID。
pytest.raises¶
チュートリアル: 予期される例外に関するアサーション
- with raises(expected_exception: type[E] | tuple[type[E], ...], *, match: str | Pattern[str] | None = ...) RaisesContext[E] as excinfo[ソース]¶
- with raises(expected_exception: type[E] | tuple[type[E], ...], func: Callable[[...], Any], *args: Any, **kwargs: Any) ExceptionInfo[E] as excinfo
コードブロック/関数呼び出しが例外タイプまたはそのサブクラスのいずれかを発生させることをアサートします。
- パラメータ:
expected_exception -- 期待される例外タイプ、または複数の可能な例外タイプのいずれかが期待される場合はタプル。 渡された例外のサブクラスも一致することに注意してください。
match (str | re.Pattern[str] | None) -- 指定された場合、正規表現を含む文字列、または正規表現オブジェクトが例外の文字列表現およびその PEP 678
__notes__に対してre.search()を使用してテストされます。 special characters を含む可能性のあるリテラル文字列に一致させるには、最初にパターンをre.escape()でエスケープできます。 (これはpytest.raisesがコンテキストマネージャとして使用される場合にのみ使用され、そうでない場合は関数に渡されます。 関数としてpytest.raisesを使用する場合は、pytest.raises(Exc, func, match="passed on").match("my pattern")を使用できます。)
コンテキストマネージャとして
pytest.raisesを使用すると、指定されたタイプの例外またはそのサブクラスのいずれかをキャプチャします:>>> import pytest >>> with pytest.raises(ZeroDivisionError): ... 1/0
コードブロックが期待される例外 (
ZeroDivisionError上記の例) を発生させない場合、またはまったく例外を発生させない場合、チェックは失敗します。キーワード引数
matchを使用して、例外がテキストまたは正規表現に一致することをアサートすることもできます:>>> with pytest.raises(ValueError, match='must be 0 or None'): ... raise ValueError("value must be 0 or None") >>> with pytest.raises(ValueError, match=r'must be \d+$'): ... raise ValueError("value must be 42")
match引数は、フォーマットされた例外文字列を検索します。 これには、PEP-678__notes__が含まれます。>>> with pytest.raises(ValueError, match=r"had a note added"): ... e = ValueError("value must be 42") ... e.add_note("had a note added") ... raise e
コンテキストマネージャは
ExceptionInfoオブジェクトを生成し、キャプチャされた例外の詳細を調査するために使用できます。>>> with pytest.raises(ValueError) as exc_info: ... raise ValueError("value must be 42") >>> assert exc_info.type is ValueError >>> assert exc_info.value.args[0] == "value must be 42"
警告
pytest.raisesはサブクラスに一致するため、次のようにExceptionに一致させる場合は注意してください。with pytest.raises(Exception): # Careful, this will catch ANY exception raised. some_function()
Exceptionはほとんどすべての例外の基底クラスであるため、特定の例外を期待してこれを書いたユーザーが、リファクタリング中に導入されたバグにより他の例外が発生している場合に、これが実際のバグを隠すことが容易です。任意の 例外をキャッチしたいと確信している場合を除き、
Exceptionをキャッチするためにpytest.raisesを使用することは避けてください。注釈
pytest.raisesをコンテキストマネージャとして使用する場合、通常のコンテキストマネージャのルールが適用され、発生した例外はコンテキストマネージャのスコープ内の最後の行でなければならないことに注意する価値があります。 その後のコード行はコンテキストマネージャのスコープ内では実行されません。 例えば:>>> value = 15 >>> with pytest.raises(ValueError) as exc_info: ... if value > 10: ... raise ValueError("value must be <= 10") ... assert exc_info.type is ValueError # This will not execute.
代わりに、次のアプローチを取る必要があります (スコープの違いに注意):
>>> with pytest.raises(ValueError) as exc_info: ... if value > 10: ... raise ValueError("value must be <= 10") ... >>> assert exc_info.type is ValueError
pytest.mark.parametrizeを使用するpytest.mark.parametrize を使用する場合、いくつかの実行で例外を発生させ、他の実行では発生させないようにテストをパラメータ化することが可能です。
例については 条件付きの例外発生をパラメータ化する を参照してください。
参考
詳細な議論と他の例については 予期される例外に関するアサーション を参照してください。
レガシーフォーム
呼び出されるラムダを渡すことで、呼び出し可能なものを指定することができます:
>>> raises(ZeroDivisionError, lambda: 1/0) <ExceptionInfo ...>
または、引数付きの任意の呼び出し可能なものを指定することもできます:
>>> def f(x): return 1/x ... >>> raises(ZeroDivisionError, f, 0) <ExceptionInfo ...> >>> raises(ZeroDivisionError, f, x=0) <ExceptionInfo ...>
上記の形式は完全にサポートされていますが、新しいコードには推奨されません。 コンテキストマネージャ形式の方が読みやすく、エラーが発生しにくいと考えられているためです。
注釈
Python でキャッチされた例外オブジェクトと同様に、返された
ExceptionInfoオブジェクトへのローカル参照を明示的にクリアすることで、Python インタープリタがガベージコレクションを高速化するのに役立ちます。これらの参照をクリアすることで、参照サイクル (
ExceptionInfo--> キャッチされた例外 --> 例外を発生させるフレームスタック --> 現在のフレームスタック --> ローカル変数 -->ExceptionInfo) が破壊され、Python がそのサイクルから参照されるすべてのオブジェクト (現在のフレームのすべてのローカル変数を含む) を次の循環ガベージコレクション実行まで生きている状態に保ちます。 詳細な情報は、公式の Python ドキュメントの the try statement にあります。
pytest.deprecated_call¶
チュートリアル: コードが非推奨警告をトリガーすることを確認する
- with deprecated_call(*, match: str | Pattern[str] | None = ...) WarningsRecorder[ソース]¶
- with deprecated_call(func: Callable[[...], T], *args: Any, **kwargs: Any) T
コードが
DeprecationWarningまたはPendingDeprecationWarningまたはFutureWarningを生成することをアサートします。この関数はコンテキストマネージャとして使用できます:
>>> import warnings >>> def api_call_v2(): ... warnings.warn('use v3 of this api', DeprecationWarning) ... return 200 >>> import pytest >>> with pytest.deprecated_call(): ... assert api_call_v2() == 200
関数と
*argsおよび**kwargsを渡すことで使用することもできます。 この場合、func(*args, **kwargs)を呼び出すと、上記のいずれかの警告タイプが生成されることを保証します。 戻り値は関数の戻り値です。コンテキストマネージャ形式では、キーワード引数
matchを使用して、警告がテキストまたは正規表現に一致することをアサートできます。コンテキストマネージャは、発生した警告ごとに 1 つの
warnings.WarningMessageオブジェクトのリストを生成します。
pytest.register_assert_rewrite¶
チュートリアル: アサーションの書き換え
pytest.warns¶
チュートリアル: warns 関数を使用して警告をアサートする
- with warns(expected_warning: type[Warning] | tuple[type[Warning], ...] = <class 'Warning'>, *, match: str | ~typing.Pattern[str] | None = None) WarningsChecker[ソース]¶
- with warns(expected_warning: type[Warning] | tuple[type[Warning], ...], func: Callable[[...], T], *args: Any, **kwargs: Any) T
コードが特定のクラスの警告を発生させることをアサートします。
具体的には、パラメータ
expected_warningは警告クラスまたは警告クラスのタプルであり、withブロック内のコードは、そのクラスまたはクラスの少なくとも 1 つの警告を発行する必要があります。このヘルパーは、発行された警告ごとに 1 つの
warnings.WarningMessageオブジェクトのリストを生成します (expected_warningであるかどうかに関係なく)。 pytest 8.0 以降、一致しない警告もコンテキストが閉じると再発行されます。この関数はコンテキストマネージャとして使用できます:
>>> import pytest >>> with pytest.warns(RuntimeWarning): ... warnings.warn("my warning", RuntimeWarning)
コンテキストマネージャ形式では、キーワード引数
matchを使用して、警告がテキストまたは正規表現に一致することをアサートできます:>>> with pytest.warns(UserWarning, match='must be 0 or None'): ... warnings.warn("value must be 0 or None", UserWarning) >>> with pytest.warns(UserWarning, match=r'must be \d+$'): ... warnings.warn("value must be 42", UserWarning) >>> with pytest.warns(UserWarning): # catch re-emitted warning ... with pytest.warns(UserWarning, match=r'must be \d+$'): ... warnings.warn("this is not here", UserWarning) Traceback (most recent call last): ... Failed: DID NOT WARN. No warnings of type ...UserWarning... were emitted...
pytest.mark.parametrizeを使用するpytest.mark.parametrize を使用すると、いくつかの実行で警告を発生させ、他の実行では発生させないようにテストをパラメータ化することが可能です。
これは例外と同じ方法で達成できます。 例については 条件付きの例外発生をパラメータ化する を参照してください。
pytest.freeze_includes¶
チュートリアル: pytestのフリーズ
マーク¶
マークは、テスト関数 (ただしフィクスチャではない) にメタデータを適用するために使用でき、その後フィクスチャやプラグインからアクセスできます。
pytest.mark.filterwarnings¶
チュートリアル: @pytest.mark.filterwarnings
マークされたテスト項目に警告フィルタを追加します。
- pytest.mark.filterwarnings(filter)¶
- パラメータ:
filter (str) -- 警告仕様文字列 は、Python ドキュメントの The Warnings Filter セクションで指定されている
(action, message, category, module, lineno)のタプルの内容で構成され、":"で区切られます。 オプションのフィールドは省略できます。 フィルタリングに渡されるモジュール名は正規表現でエスケープされません。 例: .. code-block:: python @pytest.mark.filterwarnings("ignore:.*usage will be deprecated.*:DeprecationWarning") def test_foo(): ...
pytest.mark.parametrize¶
チュートリアル: フィクスチャとテスト関数をパラメータ化する方法
このマークは pytest.Metafunc.parametrize() と同じシグネチャを持っています。 そちらを参照してください。
pytest.mark.skip¶
チュートリアル: テスト関数のスキップ
テスト関数を無条件でスキップします。
pytest.mark.skipif¶
チュートリアル: テスト関数のスキップ
条件が True の場合、テスト関数をスキップします。
- pytest.mark.skipif(condition, *, reason=None)¶
- パラメータ:
condition (bool or str) -- 条件がスキップされるべきかどうかの
True/Falseまたは condition string。reason (str) -- テスト関数がスキップされる理由。
pytest.mark.usefixtures¶
チュートリアル: クラスおよびモジュールで usefixtures を使用してフィクスチャを使用する
テスト関数を指定されたフィクスチャ名を使用するようにマークします。
- pytest.mark.usefixtures(*names)¶
- パラメータ:
args -- フィクスチャの名前。 文字列として。
注釈
フックで usefixtures を使用する場合、テストセットアップ前のテスト関数に適用されるときのみフィクスチャをロードできます (たとえば pytest_collection_modifyitems フックで)。
また、このマークは フィクスチャ に適用された場合には効果がありません。
pytest.mark.xfail¶
チュートリアル: XFail: テスト関数が失敗すると予想されることをマークする
テスト関数を 失敗することが期待される としてマークします。
- pytest.mark.xfail(condition=False, *, reason=None, raises=None, run=True, strict=xfail_strict)¶
- パラメータ:
condition (Union[bool, str]) -- テスト関数を xfail としてマークする条件 (
True/Falseまたは condition string)。boolの場合はreasonも指定する必要があります (condition string を参照)。reason (str) -- テスト関数が xfail としてマークされる理由。
raises (Type[
Exception]) -- テスト関数によって発生することが期待される例外クラス (またはクラスのタプル)。 他の例外はテストに失敗します。 渡されたクラスのサブクラスも一致する結果になることに注意してください (exceptステートメントの動作と同様)。run (bool) -- テスト関数が実際に実行されるべきかどうか。
Falseの場合、関数は常に xfail となり、実行されません (関数がセグフォルトしている場合に便利です)。strict (bool) --
Falseの場合、関数はターミナル出力にxfailedとして表示され、失敗した場合はxpassとして表示されます。 どちらの場合も、これはテストスイート全体を失敗させることはありません。 これは、後で対処するために flaky テスト (ランダムに失敗するテスト) をマークするのに特に便利です。Trueの場合、関数は失敗した場合にxfailedとしてターミナル出力に表示されますが、予期せずにパスした場合はテストスイートを 失敗 させます。 これは、常に失敗する関数をマークし、予期せずにパスし始めた場合には明確な指示があるべきである関数をマークするのに特に便利です (たとえば、新しいリリースで既知のバグが修正された場合)。
デフォルトは
xfail_strictで、デフォルトはFalseです。
カスタムマーク¶
マークは、ファクトリオブジェクト pytest.mark を使用して動的に作成され、デコレータとして適用されます。
例:
@pytest.mark.timeout(10, "slow", method="thread")
def test_function(): ...
収集された Item に Mark オブジェクトを作成してアタッチし、その後、フィクスチャやフックで Node.iter_markers を使用してアクセスできます。 mark オブジェクトには以下の属性があります:
mark.args == (10, "slow")
mark.kwargs == {"method": "thread"}
複数のカスタムマーカーを使用する例:
@pytest.mark.timeout(10, "slow", method="thread")
@pytest.mark.slow
def test_function(): ...
Node.iter_markers または Node.iter_markers_with_node が複数のマーカーで使用されると、関数に最も近いマーカーが最初に反復されます。 上記の例では、@pytest.mark.slow が最初に続いて @pytest.mark.timeout(...) になります。
フィクスチャ¶
チュートリアル: フィクスチャのリファレンス
フィクスチャは、テスト関数や他のフィクスチャによって、引数名として宣言することで要求されます。
フィクスチャを必要とするテストの例:
def test_output(capsys):
print("hello")
out, err = capsys.readouterr()
assert out == "hello\n"
別のフィクスチャを必要とするフィクスチャの例:
@pytest.fixture
def db_session(tmp_path):
fn = tmp_path / "db.file"
return connect(fn)
詳細については、完全な fixtures docs を参照してください。
@pytest.fixture¶
- @fixture(fixture_function: FixtureFunction, *, scope: Literal['session', 'package', 'module', 'class', 'function'] | Callable[[str, Config], Literal['session', 'package', 'module', 'class', 'function']] = 'function', params: Iterable[object] | None = None, autouse: bool = False, ids: Sequence[object | None] | Callable[[Any], object | None] | None = None, name: str | None = None) FixtureFunction[ソース]¶
- @fixture(fixture_function: None = None, *, scope: Literal['session', 'package', 'module', 'class', 'function'] | Callable[[str, Config], Literal['session', 'package', 'module', 'class', 'function']] = 'function', params: Iterable[object] | None = None, autouse: bool = False, ids: Sequence[object | None] | Callable[[Any], object | None] | None = None, name: str | None = None) FixtureFunctionMarker
フィクスチャファクトリ関数をマークするためのデコレータ。
このデコレータは、パラメータの有無にかかわらず、フィクスチャ関数を定義するために使用できます。
フィクスチャ関数の名前は、テストの実行前にその呼び出しを引き起こすために参照されることがあります: テストモジュールやクラスは
pytest.mark.usefixtures(fixturename)マーカーを使用できます。テスト関数は、入力引数として直接フィクスチャ名を使用でき、その場合、フィクスチャ関数から返されるフィクスチャインスタンスが注入されます。
フィクスチャは
returnまたはyieldステートメントを使用してテスト関数に値を提供できます。yieldを使用する場合、yieldステートメントの後のコードブロックはテストの結果に関係なくティアダウンコードとして実行され、正確に一度だけyieldされなければなりません。- パラメータ:
scope -- このフィクスチャが共有されるスコープ;
"function"(デフォルト)、"class"、"module"、"package"、または"session"のいずれか。 このパラメータは(fixture_name, config)をパラメータとして受け取り、上記の値のいずれかを持つstrを返すコール可能なものでもかまいません。 詳細については、ドキュメントの 動的スコープ を参照してください。params -- フィクスチャ関数とそれを使用するすべてのテストの複数の呼び出しを引き起こすパラメータのオプションのリスト。 現在のパラメータは
request.paramで利用できます。autouse -- True の場合、フィクスチャ関数はそれを見ることができるすべてのテストに対してアクティブになります。 False (デフォルト) の場合、フィクスチャをアクティブにするには明示的な参照が必要です。
ids -- パラメータに対応する ID のシーケンス。 これらはテスト ID の一部となります。 ID が提供されない場合、それらはパラメータから自動的に生成されます。
name -- フィクスチャの名前。 これはデコレートされた関数の名前がデフォルトになります。 フィクスチャが定義されているモジュール内で使用される場合、フィクスチャの関数名はフィクスチャを要求する関数引数によって隠されます。 これを解決する方法の一つは、デコレートされた関数を
fixture_<fixturename>と名付け、@pytest.fixture(name='<fixturename>')を使用することです。
capfd¶
チュートリアル: stdout/stderr 出力をキャプチャする方法
- capfd()[ソース]¶
ファイルディスクリプタ
1と2への書き込みのテキストキャプチャを有効にします。キャプチャされた出力は
capfd.readouterr()メソッド呼び出しを通じて利用可能で、(out, err)の名前付きタプルを返します。outとerrはtextオブジェクトになります。インスタンスを返します
CaptureFixture[str]。例:
def test_system_echo(capfd): os.system('echo "hello"') captured = capfd.readouterr() assert captured.out == "hello\n"
capfdbinary¶
チュートリアル: stdout/stderr 出力をキャプチャする方法
- capfdbinary()[ソース]¶
ファイルディスクリプタ
1と2への書き込みのバイトキャプチャを有効にします。キャプチャされた出力は
capfd.readouterr()メソッド呼び出しを通じて利用可能で、(out, err)の名前付きタプルを返します。outとerrはbyteオブジェクトになります。インスタンスを返します
CaptureFixture[bytes]。例:
def test_system_echo(capfdbinary): os.system('echo "hello"') captured = capfdbinary.readouterr() assert captured.out == b"hello\n"
caplog¶
チュートリアル: ロギングを管理する方法
- caplog()[ソース]¶
ログキャプチャへのアクセスと制御。
キャプチャされたログは次のプロパティ/メソッドを通じて利用可能です:
* caplog.messages -> list of format-interpolated log messages * caplog.text -> string containing formatted log output * caplog.records -> list of logging.LogRecord instances * caplog.record_tuples -> list of (logger_name, level, message) tuples * caplog.clear() -> clear captured records and formatted log output string
インスタンスを返します
pytest.LogCaptureFixture。
- final class LogCaptureFixture[ソース]¶
ログキャプチャへのアクセスと制御を提供します。
- property handler: LogCaptureHandler¶
フィクスチャで使用されるロギングハンドラを取得します。
- get_records(when)[ソース]¶
可能なテストフェーズのいずれかのログレコードを取得します。
- パラメータ:
when (Literal['setup', 'call', 'teardown']) -- どのテストフェーズからレコードを取得するか。 有効な値は: "setup"、"call"、および "teardown"。
- 戻り値:
指定されたステージでキャプチャされたレコードのリスト。
- 戻り値の型:
Added in version 3.4.
- property record_tuples: list[tuple[str, int, str]]¶
アサーション比較に使用するために意図されたログレコードの簡略版のリスト。
タプルの形式は:
(logger_name, log_level, message)
- property messages: list[str]¶
フォーマットされたログメッセージのリスト。
「records」とは異なり、このリストのログメッセージはすべてフォーマットされています。
「text」とは異なり、このリストのログメッセージにはレベル、タイムスタンプなどが付いていないため、正確な比較がより信頼性の高いものになります。
トレースバックやスタック情報 (
logging.exception()またはロギング関数へのexc_infoまたはstack_info引数から) は含まれていないことに注意してください。 これはハンドラのフォーマッタによって追加されます。Added in version 3.7.
- set_level(level, logger=None)[ソース]¶
テストの期間中にロガーのしきい値レベルを設定します。
このレベルよりも重大度の低いロギングメッセージはキャプチャされません。
バージョン 3.4 で変更: この関数によって変更されたロガーのレベルは、テストの終了時に元の値に戻されます。
要求されたロギングレベルが
logging.disable()によって無効にされていた場合、それを有効にします。
- with at_level(level, logger=None)[ソース]¶
ログのキャプチャのためのレベルを設定するコンテキストマネージャ。 'with' ステートメントの終了後、レベルは元の値に戻されます。
要求されたロギングレベルが
logging.disable()によって無効にされていた場合、それを有効にします。
- with filtering(filter_)[ソース]¶
指定されたフィルタを caplog の
handler()に一時的に追加し、ブロックの終了時にそのフィルタを削除するコンテキストマネージャ。- パラメータ:
filter -- カスタム
logging.Filterオブジェクト。
Added in version 7.5.
capsys¶
チュートリアル: stdout/stderr 出力をキャプチャする方法
- capsys()[ソース]¶
sys.stdoutとsys.stderrへの書き込みのテキストキャプチャを有効にします。キャプチャされた出力は
capsys.readouterr()メソッド呼び出しを通じて利用可能で、(out, err)の名前付きタプルを返します。outとerrはtextオブジェクトになります。インスタンスを返します
CaptureFixture[str]。例:
def test_output(capsys): print("hello") captured = capsys.readouterr() assert captured.out == "hello\n"
- class CaptureFixture[ソース]¶
オブジェクトを返します
capsys、capsysbinary、capfd、およびcapfdbinaryフィクスチャ。
capsysbinary¶
チュートリアル: stdout/stderr 出力をキャプチャする方法
- capsysbinary()[ソース]¶
sys.stdoutとsys.stderrへの書き込みのバイトキャプチャを有効にします。キャプチャされた出力は
capsysbinary.readouterr()メソッド呼び出しを通じて利用可能で、(out, err)の名前付きタプルを返します。outとerrはbytesオブジェクトになります。インスタンスを返します
CaptureFixture[bytes]。例:
def test_output(capsysbinary): print("hello") captured = capsysbinary.readouterr() assert captured.out == b"hello\n"
config.cache¶
チュートリアル: 失敗したテストを再実行し、テスト実行間で状態を維持する方法
config.cache オブジェクトは、他のプラグインやフィクスチャがテストの実行間で値を保存および取得することを可能にします。 フィクスチャからアクセスするには、pytestconfig をフィクスチャに要求し、pytestconfig.cache で取得します。
内部では、キャッシュプラグインは json 標準ライブラリモジュールのシンプルな dumps/loads API を使用します。
config.cache は pytest.Cache のインスタンスです:
- final class Cache[ソース]¶
cacheフィクスチャのインスタンス。- mkdir(name)[ソース]¶
指定された名前のディレクトリパスオブジェクトを返します。
ディレクトリがまだ存在しない場合は作成されます。 これを使用して、テストセッション間でデータベースダンプを保存/取得するためのファイルを管理できます。
Added in version 7.0.
- パラメータ:
name (str) --
/セパレータを含まない文字列でなければなりません。 名前には他のキャッシュユーザーとの衝突を防ぐためにプラグインまたはアプリケーションの識別子を含めてください。
doctest_namespace¶
チュートリアル: doctest を実行する方法
- doctest_namespace()[ソース]¶
フィクスチャは、doctest の名前空間に挿入される
dictを返します。通常、このフィクスチャは別の
autouseフィクスチャと組み合わせて使用されます:@pytest.fixture(autouse=True) def add_np(doctest_namespace): doctest_namespace["np"] = numpy
詳細については: 'doctest_namespace' フィクスチャ。
monkeypatch¶
チュートリアル: モジュールや環境をモンキーパッチ/モックする方法
- monkeypatch()[ソース]¶
モンキーパッチのための便利なフィクスチャ。
フィクスチャは、オブジェクト、辞書、または
os.environを変更するためのこれらのメソッドを提供します:すべての変更は、要求されたテスト関数またはフィクスチャが終了した後に元に戻されます。
raisingパラメータは、設定/削除操作が指定されたターゲットを持たない場合にKeyErrorまたはAttributeErrorが発生するかどうかを決定します。制限されたスコープでフィクスチャによって行われた変更を元に戻すには、
context()を使用します。インスタンスを返します
MonkeyPatch。
- final class MonkeyPatch[ソース]¶
属性/アイテム/環境変数/シスパスを便利にモンキーパッチするためのヘルパー。
フィクスチャ
monkeypatchによって返されます。バージョン 6.2 で変更: フィクスチャが利用できない場合に
pytest.MonkeyPatch()として直接使用することもできます。 この場合、with MonkeyPatch.context() as mp:を使用するか、undo()を明示的に呼び出すことを忘れないでください。- classmethod with context()[ソース]¶
withブロックの終了時に内部で行われたパッチを元に戻す新しいMonkeyPatchオブジェクトを返すコンテキストマネージャ。例:
import functools def test_partial(monkeypatch): with monkeypatch.context() as m: m.setattr(functools, "partial", 3)
テストが終了する前にいくつかのパッチを元に戻す必要がある状況で便利です。 例えば、
stdlib関数をモックする場合、モックすると pytest 自体が壊れる可能性があります (この例については #3290 を参照してください)。
- setattr(target: str, name: object, value: ~_pytest.monkeypatch.Notset = <notset>, raising: bool = True) None[ソース]¶
- setattr(target: object, name: str, value: object, raising: bool = True) None
ターゲットの属性値を設定し、古い値を記憶します。
例:
import os monkeypatch.setattr(os, "getcwd", lambda: "/")
上記のコードは、
os.getcwd()関数を常に"/"を返すlambdaに置き換えます。便利なように、
targetとして文字列を指定することができ、これはドットで区切られたインポートパスとして解釈され、最後の部分が属性名になります:monkeypatch.setattr("os.getcwd", lambda: "/")
属性が存在しない場合、
raisingが False に設定されていない限り、AttributeErrorが発生します。どこにパッチを当てるか
monkeypatch.setattrは、名前が指すオブジェクトを別のオブジェクトに (一時的に) 変更することで機能します。 任意の個々のオブジェクトを指す名前は多数存在する可能性があるため、パッチが機能するためには、テスト対象のシステムが使用する名前をパッチする必要があります。unittest.mock.patch()用に書かれていますが、monkeypatch.setattrにも適用される完全な説明については、unittest.mockドキュメントのセクション Where to patch を参照してください。
- delattr(target, name=<notset>, raising=True)[ソース]¶
targetから属性nameを削除します。nameが指定されておらず、targetが文字列の場合、それはドットで区切られたインポートパスとして解釈され、最後の部分が属性名になります。属性が存在しない場合、
raisingが False に設定されていない限り、AttributeError が発生します。
- delitem(dic, name, raising=True)[ソース]¶
辞書から
nameを削除します。存在しない場合、
raisingが False に設定されていない限り、KeyErrorが発生します。
- setenv(name, value, prepend=None)[ソース]¶
環境変数
nameにvalueを設定します。prependが文字の場合、現在の環境変数の値を読み取り、prepend文字で結合されたvalueを前に追加します。
- delenv(name, raising=True)[ソース]¶
環境から
nameを削除します。存在しない場合、
raisingが False に設定されていない限り、KeyErrorが発生します。
- undo()[ソース]¶
以前の変更を元に戻します。
この呼び出しは元に戻すスタックを消費します。 元に戻す呼び出しの後にさらにモンキーパッチを行わない限り、2 回目の呼び出しは効果がありません。
通常、
undo()を呼び出す必要はありません。 ティアダウン中に自動的に呼び出されます。注釈
同じ
monkeypatchフィクスチャが単一のテスト関数呼び出し全体で使用されます。 テスト関数自体とテストフィクスチャの両方でmonkeypatchが使用される場合、undo()を呼び出すと、両方の関数で行われたすべての変更が元に戻されます。代わりに
context()を使用することをお勧めします。
pytestconfig¶
- pytestconfig()[ソース]¶
セッションの
pytest.Configオブジェクトを返すセッションスコープのフィクスチャ。例:
def test_foo(pytestconfig): if pytestconfig.get_verbosity() > 0: ...
pytester¶
Added in version 6.2.
pytest 自体を実行およびテストするために使用できる Pytester インスタンスを提供します。
pytest を隔離して実行できる空のディレクトリを提供し、テスト、設定ファイルの作成、および予想される出力との一致を行うための機能を含みます。
使用するには、最上位の conftest.py ファイルに含めます:
pytest_plugins = "pytester"
- final class Pytester[ソース]¶
pytest プラグインのブラックボックステストに最適な、テスト/設定ファイルの作成、pytest の隔離実行、および予想される出力との一致を行うための機能。
外部要因からテスト実行をできるだけ隔離し、初期化中に現在の作業ディレクトリを
pathに変更し、環境変数を変更します。- plugins: list[str | object]¶
プラグインを使用するためのリスト
parseconfig()およびrunpytest()。 初期状態ではこれは空のリストですが、プラグインをリストに追加できます。 使用するメソッドによって追加するアイテムのタイプが異なるため、詳細についてはそれらを参照してください。
- make_hook_recorder(pluginmanager)[ソース]¶
PytestPluginManagerのための新しいHookRecorderを作成します。
- makefile(ext, *args, **kwargs)[ソース]¶
テストディレクトリに新しいテキストファイルを作成します。
- パラメータ:
- 戻り値:
最初に作成されたファイル。
- 戻り値の型:
例:
pytester.makefile(".txt", "line1", "line2") pytester.makefile(".ini", pytest="[pytest]\naddopts=-rs\n")
バイナリファイルを作成するには、
pathlib.Path.write_bytes()を直接使用します:filename = pytester.path.joinpath("foo.bin") filename.write_bytes(b"...")
- makepyfile(*args, **kwargs)[ソース]¶
.py 拡張子を持つ .makefile() のショートカット。
デフォルトでは、拡張子 '.py' を持つテスト名 (例: test_foobar.py) になり、既存のファイルを上書きします。
例:
def test_something(pytester): # Initial file is created test_something.py. pytester.makepyfile("foobar") # To create multiple files, pass kwargs accordingly. pytester.makepyfile(custom="foobar") # At this point, both 'test_something.py' & 'custom.py' exist in the test directory.
- maketxtfile(*args, **kwargs)[ソース]¶
.txt 拡張子を持つ .makefile() のショートカット。
デフォルトでは、拡張子 '.txt' を持つテスト名 (例: test_foobar.txt) になり、既存のファイルを上書きします。
例:
def test_something(pytester): # Initial file is created test_something.txt. pytester.maketxtfile("foobar") # To create multiple files, pass kwargs accordingly. pytester.maketxtfile(custom="foobar") # At this point, both 'test_something.txt' & 'custom.txt' exist in the test directory.
- syspathinsert(path=None)[ソース]¶
ディレクトリを sys.path に前に追加します。 デフォルトは
path。これは各テストの終了時にこのオブジェクトが破棄されると自動的に元に戻されます。
- mkpydir(name)[ソース]¶
新しい Python パッケージを作成します。
これにより、空の
__init__.pyファイルを持つ (サブ) ディレクトリが作成され、Python パッケージとして認識されます。
- copy_example(name=None)[ソース]¶
プロジェクトのディレクトリからテストディレクトリにファイルをコピーします。
- パラメータ:
name (str | None) -- コピーするファイルの名前。
- 戻り値:
コピーされたディレクトリへのパス (
self.path内)。- 戻り値の型:
- getnode(config, arg)[ソース]¶
ファイルのコレクションノードを取得します。
- パラメータ:
config (Config) -- pytest 設定。 作成方法については
parseconfig()およびparseconfigure()を参照してください。
- 戻り値:
ノード。
- 戻り値の型:
- getpathnode(path)[ソース]¶
ファイルのコレクションノードを返します。
これは
getnode()に似ていますが、(設定された) pytest Config インスタンスを作成するためにparseconfigure()を使用します。
- genitems(colitems)[ソース]¶
コレクションノードからすべてのテストアイテムを生成します。
これによりコレクションノードが再帰的に処理され、その中に含まれるすべてのテストアイテムのリストが返されます。
- runitem(source)[ソース]¶
"test_func" アイテムを実行します。
呼び出し元のテストインスタンス (テストメソッドを含むクラス) は、単一のアイテムのテストプロトコルを実行できるランナーを返す
.getrunner()メソッドを提供する必要があります。 例:_pytest.runner.runtestprotocol。
- inline_runsource(source, *cmdlineargs)[ソース]¶
pytest.main()を使用してプロセス内でテストモジュールを実行します。この実行は "source" を一時ファイルに書き込み、
pytest.main()を実行し、その結果のHookRecorderインスタンスを返します。- パラメータ:
source (str) -- テストモジュールのソースコード。
cmdlineargs -- 使用する追加のコマンドライン引数。
- inline_genitems(*args)[ソース]¶
プロセス内で
pytest.main(['--collect-only'])を実行します。inline_run()のように、テストプロセス内で pytest 全体を実行するためにpytest.main()関数を実行しますが、収集されたアイテムのタプルとHookRecorderインスタンスを返します。
- inline_run(*args, plugins=(), no_reraise_ctrlc=False)[ソース]¶
プロセス内で
pytest.main()を実行し、HookRecorder を返します。pytest.main()関数を実行して、テストプロセス内で pytest 全体を実行します。 これにより、HookRecorderインスタンスが返され、その実行からの結果がrunpytest()からの stdout/stderr の一致よりも詳細になります。- パラメータ:
args (str | PathLike[str]) -- コマンドライン引数を
pytest.main()に渡します。plugins --
pytest.main()インスタンスが使用する追加のプラグインインスタンス。no_reraise_ctrlc (bool) -- 通常、子プロセスの実行からキーボード割り込みを再発生させます。 True の場合、KeyboardInterrupt 例外がキャプチャされます。
- runpytest_inprocess(*args, **kwargs)[ソース]¶
pytest をプロセス内で実行した結果を返し、self.runpytest() が提供するインターフェースに似ています。
- runpytest(*args, **kwargs)[ソース]¶
コマンドラインオプション "--runpytest" に応じて、pytest をインラインまたはサブプロセスで実行し、
RunResultを返します。
- parseconfig(*args)[ソース]¶
指定されたコマンドライン引数から新しい pytest
pytest.Configインスタンスを返します。これにより、_pytest.config の pytest ブートストラップコードが呼び出され、新しい
pytest.PytestPluginManagerが作成され、pytest_cmdline_parseフックが呼び出されて新しいpytest.Configインスタンスが作成されます。pluginsが設定されている場合、それらはプラグインマネージャーに登録されるプラグインモジュールである必要があります。
- parseconfigure(*args)[ソース]¶
新しい pytest 設定済み Config インスタンスを返します。
parseconfig()のように新しいpytest.Configインスタンスを返しますが、pytest_configureフックも呼び出します。
- getitem(source, funcname='test_func')[ソース]¶
テスト関数のテストアイテムを返します。
ソースを Python ファイルに書き込み、結果のモジュールで pytest のコレクションを実行し、要求された関数名のテストアイテムを返します。
- getitems(source)[ソース]¶
モジュールから収集されたすべてのテストアイテムを返します。
ソースを Python ファイルに書き込み、結果のモジュールで pytest のコレクションを実行し、その中に含まれるすべてのテストアイテムを返します。
- getmodulecol(source, configargs=(), *, withinit=False)[ソース]¶
sourceのモジュールコレクションノードを返します。sourceをmakepyfile()を使用してファイルに書き込み、その後 pytest のコレクションを実行し、テストモジュールのコレクションノードを返します。- パラメータ:
configargs --
parseconfigure()に渡す追加の引数。withinit (bool) -- パッケージであることを保証するために、同じディレクトリに
__init__.pyファイルも書き込むかどうか。
- collect_by_name(modcol, name)[ソース]¶
モジュールコレクションから名前のコレクションノードを返します。
指定された名前に一致するコレクションノードをモジュールコレクションノードから検索します。
- パラメータ:
modcol (Collector) -- モジュールコレクションノード;
getmodulecol()を参照してください。name (str) -- 返すノードの名前。
- popen(cmdargs, stdout=-1, stderr=-1, stdin=NotSetType.token, **kw)[ソース]¶
subprocess.Popenを呼び出します。現在の作業ディレクトリが
PYTHONPATHに含まれていることを確認してsubprocess.Popenを呼び出します。代わりに
run()を使用することをお勧めします。
- run(*cmdargs, timeout=None, stdin=NotSetType.token)[ソース]¶
引数付きでコマンドを実行します。
subprocess.Popenを使用してプロセスを実行し、stdout と stderr を保存します。- パラメータ:
cmdargs (str | PathLike[str]) --
subprocess.Popenに渡す引数のシーケンス。 パスのようなオブジェクトは自動的にstrに変換されます。timeout (float | None) -- タイムアウト後に
Pytester.TimeoutExpiredを発生させる秒数。stdin (_pytest.compat.NotSetType | bytes | IO[Any] | int) -- オプションの標準入力。 -
CLOSE_STDIN(デフォルト) の場合、このメソッドはstdin=subprocess.PIPEでsubprocess.Popenを呼び出し、新しいコマンドが開始された直後に標準入力を閉じます。 -bytes型の場合、これらのバイトがコマンドの標準入力に送信されます。 - それ以外の場合は、subprocess.Popenに渡されます。 この場合の詳細については、subprocess.Popenのstdinパラメータのドキュメントを参照してください。
- 戻り値:
結果。
- 戻り値の型:
- runpytest_subprocess(*args, timeout=None)[ソース]¶
指定された引数で pytest をサブプロセスとして実行します。
pluginsリストに追加されたプラグインは、-pコマンドラインオプションを使用して追加されます。 さらに、--basetempを使用して、一時ファイルやディレクトリを "runpytest-" というプレフィックスが付いた番号付きディレクトリに配置し、通常の番号付き pytest の一時ファイルやディレクトリの場所と競合しないようにします。
- final class RunResult[ソース]¶
Pytesterからコマンドを実行した結果。- outlines¶
stdout からキャプチャされた行のリスト。
- errlines¶
stderr からキャプチャされた行のリスト。
- stdout¶
stdout の
LineMatcher。例として
str(stdout)を使用して stdout を再構築するか、一般的に使用されるstdout.fnmatch_lines()メソッドを使用します。
- stderr¶
stderr の
LineMatcher。
- duration¶
秒単位の期間。
- parseoutcomes()[ソース]¶
テストプロセスが生成したターミナル出力を解析して、結果の名詞 -> カウントの辞書を返します。
返される名詞は常に複数形になります:
======= 1 failed, 1 passed, 1 warning, 1 error in 0.13s ====
{"failed": 1, "passed": 1, "warnings": 1, "errors": 1}を返します。
- class LineMatcher[ソース]¶
テキストの柔軟なマッチング。
これは、コマンドの出力のような大きなテキストをテストするための便利なクラスです。
コンストラクタは、末尾の改行を含まない行のリストを受け取ります。 すなわち、
text.splitlines()。- fnmatch_lines_random(lines2)[ソース]¶
出力内の行が任意の順序で存在することを確認します (using
fnmatch.fnmatch())。
- re_match_lines_random(lines2)[ソース]¶
出力に任意の順序で行が存在することを確認します(
re.match()を使用)。
- fnmatch_lines(lines2, *, consecutive=False)[ソース]¶
出力に行が存在することを確認します(
fnmatch.fnmatch()を使用)。引数は一致する必要がある行のリストで、グロブワイルドカードを使用できます。 一致しない場合は pytest.fail() が呼び出されます。 一致と不一致はエラーメッセージの一部としても表示されます。
- re_match_lines(lines2, *, consecutive=False)[ソース]¶
出力に行が存在することを確認します(
re.match()を使用)。引数は
re.matchを使用して一致する必要がある行のリストです。 一致しない場合は pytest.fail() が呼び出されます。一致と不一致はエラーメッセージの一部としても表示されます。
- no_fnmatch_line(pat)[ソース]¶
fnmatch.fnmatchを使用して、キャプチャされた行が指定されたパターンに一致しないことを確認します。- パラメータ:
pat (str) -- 行を一致させるパターン。
record_property¶
チュートリアル: record_property
record_testsuite_property¶
チュートリアル: record_testsuite_property
- record_testsuite_property()[ソース]¶
新しい
<property>タグをルート<testsuite>の子として記録します。これはテストスイート全体に関するグローバル情報の記録に適しており、
xunit2JUnit ファミリーと互換性があります。これは
sessionスコープのフィクスチャで、(name, value)で呼び出されます。 例:def test_foo(record_testsuite_property): record_testsuite_property("ARCH", "PPC") record_testsuite_property("STORAGE_TYPE", "CEPH")
- パラメータ:
name -- プロパティ名。
value -- プロパティ値。 文字列に変換されます。
警告
現在、このフィクスチャは pytest-xdist プラグインでは 動作しません。 詳細は #7767 を参照してください。
recwarn¶
チュートリアル: 警告の記録
- recwarn()[ソース]¶
WarningsRecorderインスタンスを返し、テスト関数によって発行されたすべての警告を記録します。警告カテゴリに関する情報は 警告をキャプチャする方法 を参照してください。
- class WarningsRecorder[ソース]¶
警告を記録するためのコンテキストマネージャー。
記録された各警告は
warnings.WarningMessageのインスタンスです。Adapted from
warnings.catch_warnings.注釈
DeprecationWarningとPendingDeprecationWarningは異なる扱いを受けます。 詳細は コードが非推奨警告をトリガーすることを確認する を参照してください。
request¶
例: コマンドラインオプションに応じて異なる値をテスト関数に渡す
request フィクスチャは、要求されたテスト関数の情報を提供する特別なフィクスチャです。
- class FixtureRequest[ソース]¶
requestフィクスチャのタイプ。リクエストオブジェクトは、要求されたテストコンテキストへのアクセスを提供し、フィクスチャがパラメータ化されている場合は
param属性を持ちます。- property scope: Literal['session', 'package', 'module', 'class', 'function']¶
スコープ文字列。 "function"、"class"、"module"、"package"、"session" のいずれか。
- abstract property node¶
基礎となるコレクションノード(現在のリクエストスコープに依存)。
- property function¶
リクエストが関数ごとのスコープを持つ場合のテスト関数オブジェクト。
- property cls¶
テスト関数が収集されたクラス(None の場合があります)。
- property instance¶
テスト関数が収集されたインスタンス(None の場合があります)。
- property module¶
テスト関数が収集された Python モジュールオブジェクト。
- property keywords: MutableMapping[str, Any]¶
基礎となるノードのキーワード/マーカー辞書。
- abstractmethod addfinalizer(finalizer)[ソース]¶
要求されたテストコンテキスト内の最後のテストが実行を終了した後に引数なしで呼び出されるファイナライザ/ティアダウン関数を追加します。
- applymarker(marker)[ソース]¶
単一のテスト関数の呼び出しにマーカーを適用します。
このメソッドは、すべての関数呼び出しにキーワード/マーカーを持たせたくない場合に便利です。
- パラメータ:
marker (str | MarkDecorator) --
pytest.mark.NAME(...)の呼び出しによって作成されたオブジェクト。
- getfixturevalue(argname)[ソース]¶
名前付きフィクスチャ関数を動的に実行します。
可能な場合は、関数引数を介してフィクスチャを宣言することをお勧めします。 しかし、テストセットアップ時に別のフィクスチャを使用するかどうかを決定する場合は、この関数を使用してフィクスチャまたはテスト関数本体内でそれを取得できます。
このメソッドはテストセットアップフェーズまたはテスト実行フェーズ中に使用できますが、テストティアダウンフェーズ中にはフィクスチャの値が利用できない場合があります。
- パラメータ:
argname (str) -- フィクスチャ名。
- 例外:
pytest.FixtureLookupError -- 指定されたフィクスチャが見つからなかった場合。
testdir¶
pytester と同じですが、メソッドが適用可能な場合にレガシー py.path.local オブジェクトを返すインスタンスを提供します。
新しいコードでは、testdir の使用を避け、pytester を使用することをお勧めします。
- final class Testdir[ソース]
Pytesterに似ていますが、このクラスはレガシー legacy_path オブジェクトで動作します。すべてのメソッドは内部の
Pytesterインスタンスに転送され、必要に応じて結果をlegacy_pathオブジェクトに変換します。- exception TimeoutExpired
- property tmpdir: LocalPath
テストが実行される一時ディレクトリ。
- make_hook_recorder(pluginmanager)[ソース]
Pytester.make_hook_recorder()を参照してください。
- chdir()[ソース]
Pytester.chdir()を参照してください。
- makefile(ext, *args, **kwargs)[ソース]
Pytester.makefile()を参照してください。
- makeconftest(source)[ソース]
Pytester.makeconftest()を参照してください。
- makeini(source)[ソース]
Pytester.makeini()を参照してください。
- getinicfg(source)[ソース]
Pytester.getinicfg()を参照してください。
- makepyprojecttoml(source)[ソース]
Pytester.makepyprojecttoml()を参照してください。
- makepyfile(*args, **kwargs)[ソース]
Pytester.makepyfile()を参照してください。
- maketxtfile(*args, **kwargs)[ソース]
Pytester.maketxtfile()を参照してください。
- syspathinsert(path=None)[ソース]
Pytester.syspathinsert()を参照してください。
- mkdir(name)[ソース]
Pytester.mkdir()を参照してください。
- mkpydir(name)[ソース]
Pytester.mkpydir()を参照してください。
- copy_example(name=None)[ソース]
Pytester.copy_example()を参照してください。
- getnode(config, arg)[ソース]
Pytester.getnode()を参照してください。
- getpathnode(path)[ソース]
Pytester.getpathnode()を参照してください。
- genitems(colitems)[ソース]
Pytester.genitems()を参照してください。
- runitem(source)[ソース]
Pytester.runitem()を参照してください。
- inline_runsource(source, *cmdlineargs)[ソース]
Pytester.inline_runsource()を参照してください。
- inline_genitems(*args)[ソース]
Pytester.inline_genitems()を参照してください。
- inline_run(*args, plugins=(), no_reraise_ctrlc=False)[ソース]
Pytester.inline_run()を参照してください。
- runpytest_inprocess(*args, **kwargs)[ソース]
Pytester.runpytest_inprocess()を参照してください。
- runpytest(*args, **kwargs)[ソース]
Pytester.runpytest()を参照してください。
- parseconfig(*args)[ソース]
Pytester.parseconfig()を参照してください。
- parseconfigure(*args)[ソース]
Pytester.parseconfigure()を参照してください。
- getitem(source, funcname='test_func')[ソース]
Pytester.getitem()を参照してください。
- getitems(source)[ソース]
Pytester.getitems()を参照してください。
- getmodulecol(source, configargs=(), withinit=False)[ソース]
Pytester.getmodulecol()を参照してください。
- collect_by_name(modcol, name)[ソース]
Pytester.collect_by_name()を参照してください。
- popen(cmdargs, stdout=-1, stderr=-1, stdin=NotSetType.token, **kw)[ソース]
Pytester.popen()を参照してください。
- run(*cmdargs, timeout=None, stdin=NotSetType.token)[ソース]
Pytester.run()を参照してください。
- runpython(script)[ソース]
Pytester.runpython()を参照してください。
- runpython_c(command)[ソース]
Pytester.runpython_c()を参照してください。
- runpytest_subprocess(*args, timeout=None)[ソース]
Pytester.runpytest_subprocess()を参照してください。
- spawn_pytest(string, expect_timeout=10.0)[ソース]
Pytester.spawn_pytest()を参照してください。
- spawn(cmd, expect_timeout=10.0)[ソース]
Pytester.spawn()を参照してください。
tmp_path¶
チュートリアル: テストで一時ディレクトリとファイルを使用する方法
- tmp_path()[ソース]¶
一時ディレクトリ(
pathlib.Pathオブジェクトとして)を返します。 これは各テスト関数の呼び出しに固有です。 一時ディレクトリは、基本一時ディレクトリのサブディレクトリとして作成され、保持期間は 一時ディレクトリの場所と保持 で説明されているように設定可能です。
tmp_path_factory¶
チュートリアル: tmp_path_factory フィクスチャ
tmp_path_factory は TempPathFactory のインスタンスです:
- final class TempPathFactory[ソース]¶
共通の基本一時ディレクトリの下に一時ディレクトリを作成するファクトリ。 詳細は 一時ディレクトリの場所と保持 を参照してください。
tmpdir¶
チュートリアル: tmpdir および tmpdir_factory フィクスチャ
- tmpdir()¶
一時ディレクトリ(legacy_path オブジェクトとして)を返します。 これは各テスト関数の呼び出しに固有です。 一時ディレクトリは、基本一時ディレクトリのサブディレクトリとして作成され、保持期間は 一時ディレクトリの場所と保持 で説明されているように設定可能です。
tmpdir_factory¶
チュートリアル: tmpdir および tmpdir_factory フィクスチャ
tmpdir_factory は TempdirFactory のインスタンスです:
- final class TempdirFactory[ソース]¶
後方互換性のためのラッパーで、
TempPathFactoryに対してpy.path.localを実装します。- mktemp(basename, numbered=True)[ソース]¶
TempPathFactory.mktemp()と同じですが、py.path.localオブジェクトを返します。
- getbasetemp()[ソース]¶
TempPathFactory.getbasetemp()と同じですが、py.path.localオブジェクトを返します。
フック¶
チュートリアル: プラグインの作成
Reference to all hooks which can be implemented by conftest.py files and plugins.
@pytest.hookimpl¶
- @pytest.hookimpl¶
フック実装として関数をマークするための pytest のデコレーター。
フック関数の記述 および
pluggy.HookimplMarker()を参照してください。
@pytest.hookspec¶
- @pytest.hookspec¶
フックスペックとして関数をマークするための pytest のデコレーター。
新しいフックの宣言 および
pluggy.HookspecMarker()を参照してください。
ブートストラップフック¶
早期に登録されたプラグイン(内部およびサードパーティプラグイン)に対して呼び出されるブートストラップフック。
- pytest_load_initial_conftests(early_config, parser, args)[ソース]¶
コマンドラインオプションの解析に先立って、initial conftest files の読み込みを実装するために呼び出されます。
- パラメータ:
conftest プラグインで使用する¶
conftest ファイルに対してはこのフックは呼び出されません。
- pytest_cmdline_parse(pluginmanager, args)[ソース]¶
指定された引数を解析して初期化された
Configを返します。最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
注釈
このフックは、pytest.main を使用してインプロセステストを実行する際に
plugins引数に渡されたプラグインクラスに対してのみ呼び出されます。- パラメータ:
pluginmanager (PytestPluginManager) -- pytest プラグインマネージャー。
- 戻り値:
pytest 設定オブジェクト。
- 戻り値の型:
Config | None
conftest プラグインで使用する¶
conftest ファイルに対してはこのフックは呼び出されません。
- pytest_cmdline_main(config)[ソース]¶
メインのコマンドラインアクションを実行するために呼び出されます。
デフォルトの実装は、configure フックと
pytest_runtestloopを呼び出します。最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
conftest プラグインで使用する¶
このフックは initial conftests に対してのみ呼び出されます。
初期化フック¶
プラグインおよび conftest.py ファイルに対して呼び出される初期化フック。
- pytest_addoption(parser, pluginmanager)[ソース]¶
argparse スタイルのオプションと ini スタイルの設定値を登録します。 テスト実行の開始時に一度だけ呼び出されます。
- パラメータ:
parser (Parser) -- コマンドラインオプションを追加するには、
parser.addoption(...)を呼び出します。 ini ファイルの値を追加するには、parser.addini(...)を呼び出します。pluginmanager (PytestPluginManager) -- pytest プラグインマネージャー。 これを使用して
hookspec()やhookimpl()をインストールし、あるプラグインが別のプラグインのフックを呼び出してコマンドラインオプションの追加方法を変更できるようにします。
オプションは後で
configオブジェクトを介してアクセスできます。config.getoption(name)を使用してコマンドラインオプションの値を取得します。config.getini(name)を使用して ini スタイルのファイルから読み取った値を取得します。
設定オブジェクトは、多くの内部オブジェクトに
.config属性を介して渡されるか、pytestconfigフィクスチャとして取得できます。注釈
このフックはフックラッパーと互換性がありません。
conftest プラグインで使用する¶
conftest プラグインがこのフックを実装している場合、conftest が登録されたときにすぐに呼び出されます。
このフックは initial conftests に対してのみ呼び出されます。
- pytest_addhooks(pluginmanager)[ソース]¶
プラグイン登録時に呼び出され、
pluginmanager.add_hookspecs(module_or_class, prefix)の呼び出しを介して新しいフックを追加できるようにします。- パラメータ:
pluginmanager (PytestPluginManager) -- pytest プラグインマネージャー。
注釈
このフックはフックラッパーと互換性がありません。
conftest プラグインで使用する¶
conftest プラグインがこのフックを実装している場合、conftest が登録されたときにすぐに呼び出されます。
- pytest_configure(config)[ソース]¶
プラグインおよび conftest ファイルが初期設定を実行できるようにします。
注釈
このフックはフックラッパーと互換性がありません。
- パラメータ:
config (Config) -- pytest 設定オブジェクト。
conftest プラグインで使用する¶
このフックは、コマンドラインオプションが解析された後、すべての initial conftest ファイルに対して呼び出されます。 その後、他の conftest ファイルが登録されるときに呼び出されます。
- pytest_unconfigure(config)[ソース]¶
テストプロセスが終了する前に呼び出されます。
- パラメータ:
config (Config) -- pytest 設定オブジェクト。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。
- pytest_sessionstart(session)[ソース]¶
Sessionオブジェクトが作成された後、コレクションを実行し、テストループに入る前に呼び出されます。- パラメータ:
session (Session) -- pytest セッションオブジェクト。
conftest プラグインで使用する¶
このフックは initial conftests に対してのみ呼び出されます。
- pytest_sessionfinish(session, exitstatus)[ソース]¶
テストの全実行が終了した後、終了ステータスをシステムに返す直前に呼び出されます。
- パラメータ:
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。
- pytest_plugin_registered(plugin, plugin_name, manager)[ソース]¶
新しい pytest プラグインが登録されました。
- パラメータ:
plugin (_PluggyPlugin) -- プラグインモジュールまたはインスタンス。
plugin_name (str) -- プラグインが登録された名前。
manager (PytestPluginManager) -- pytest プラグインマネージャー。
注釈
このフックはフックラッパーと互換性がありません。
conftest プラグインで使用する¶
conftest プラグインがこのフックを実装している場合、conftest が登録されたときにすぐに呼び出されます。 これまでに登録された各プラグイン(自分自身を含む!)およびその後に登録されるすべてのプラグインに対して呼び出されます。
コレクションフック¶
pytest はファイルおよびディレクトリを収集するために次のフックを呼び出します:
- pytest_collection(session)[ソース]¶
指定されたセッションのコレクションフェーズを実行します。
最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。 戻り値は使用されませんが、さらなる処理を停止します。
デフォルトのコレクションフェーズは次のとおりです(詳細は個々のフックを参照してください):
初期コレクターとして
sessionから開始:
pytest_collectstart(collector)report = pytest_make_collect_report(collector)インタラクティブな例外が発生した場合は
pytest_exception_interact(collector, call, report)収集された各ノードに対して:
アイテムの場合、
pytest_itemcollected(item)コレクターの場合、それに再帰します。
pytest_collectreport(report)
pytest_collection_modifyitems(session, config, items)
選択解除されたアイテムに対して
pytest_deselected(items)(複数回呼び出される場合があります)
pytest_collection_finish(session)session.itemsを収集されたアイテムのリストに設定します。session.testscollectedを収集されたアイテムの数に設定します。
コレクションの前に何らかのアクションを実行するためにこのフックを実装できます。 例えば、ターミナルプラグインはこれを使用してコレクションカウンターの表示を開始します(
Noneを返します)。- パラメータ:
session (Session) -- pytest セッションオブジェクト。
conftest プラグインで使用する¶
このフックは initial conftests に対してのみ呼び出されます。
- pytest_ignore_collect(collection_path, path, config)[ソース]¶
このパスをコレクションの対象外にするには
Trueを返します。他のプラグインがパスをコレクションの対象外にすることを許可するには
Noneを返します。Falseを返すと、このパスを強制的にコレクションの対象外にしません。 他のプラグインがこのパスを無視する機会を与えません。このフックは、より具体的なフックを呼び出す前にすべてのファイルとディレクトリに対して参照されます。
最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
- パラメータ:
collection_path (pathlib.Path) -- 分析するパス。
path (LEGACY_PATH) -- 分析するパス(非推奨)。
config (Config) -- pytest 設定オブジェクト。
バージョン 7.0.0 で変更:
collection_pathパラメータは、pathパラメータのpathlib.Path相当として追加されました。pathパラメータは非推奨となりました。conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたコレクションパスに対して、コレクションパスの親ディレクトリにある conftest ファイルのみが参照されます(パスがディレクトリの場合、そのディレクトリ自身の conftest ファイルは参照されません。 ディレクトリは自分自身を無視できません!)。
- pytest_collect_directory(path, parent)[ソース]¶
指定されたディレクトリに対して
Collectorを作成します。 関連性がない場合は None を返します。Added in version 8.0.
最良の結果を得るために、返されるコレクターは
Directoryのサブクラスであるべきですが、これは必須ではありません。新しいノードには指定された
parentを親として持つ必要があります。最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
- パラメータ:
path (pathlib.Path) -- 分析するパス。
このフックの使用例については カスタムディレクトリコレクタの使用 を参照してください。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたコレクションパスに対して、コレクションパスの親ディレクトリにある conftest ファイルのみが参照されます(パスがディレクトリの場合、そのディレクトリ自身の conftest ファイルは参照されません。 ディレクトリは自分自身を収集できません!)。
- pytest_collect_file(file_path, path, parent)[ソース]¶
指定されたパスに対して
Collectorを作成します。 関連性がない場合は None を返します。最良の結果を得るために、返されるコレクターは
Fileのサブクラスであるべきですが、これは必須ではありません。新しいノードには指定された
parentを親として持つ必要があります。- パラメータ:
file_path (pathlib.Path) -- 分析するパス。
path (LEGACY_PATH) -- 収集するパス(非推奨)。
バージョン 7.0.0 で変更:
file_pathパラメータは、pathパラメータのpathlib.Path相当として追加されました。pathパラメータは非推奨となりました。conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたファイルパスに対して、ファイルパスの親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_pycollect_makemodule(module_path, path, parent)[ソース]¶
指定されたパスに対して
pytest.Moduleコレクターを返します。 関連性がない場合は None を返します。このフックは、一致する各テストモジュールパスに対して呼び出されます。 テストモジュールとして一致しないファイルに対してテストモジュールを作成したい場合は、
pytest_collect_fileフックを使用する必要があります。最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
- パラメータ:
module_path (pathlib.Path) -- 収集するモジュールのパス。
path (LEGACY_PATH) -- 収集するモジュールのパス(非推奨)。
バージョン 7.0.0 で変更:
module_pathパラメータは、pathパラメータのpathlib.Path相当として追加されました。pathパラメータはfspathに置き換えられました。conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定された親コレクターに対して、コレクターのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
Python モジュール内のオブジェクトのコレクションに影響を与えるために次のフックを使用できます:
- pytest_pycollect_makeitem(collector, name, obj)[ソース]¶
モジュール内の Python オブジェクトに対してカスタムアイテム/コレクターを返します。 関連性がない場合は None を返します。
最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
- パラメータ:
- 戻り値:
作成されたアイテム/コレクター。
- 戻り値の型:
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたコレクターに対して、コレクターのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_generate_tests(metafunc)[ソース]¶
テスト関数への(複数の)パラメータ化された呼び出しを生成します。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定された関数定義に対して、関数のディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_make_parametrize_id(config, val, argname)[ソース]¶
与えられた
valのユーザーフレンドリーな文字列表現を返します。 これは @pytest.mark.parametrize 呼び出しによって使用されます。 フックがvalを知らない場合は None を返します。必要に応じて、パラメータ名は
argnameとして利用可能です。最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
- パラメータ:
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。
テストスキップに影響を与えるためのフック:
- pytest_markeval_namespace(config)[ソース]¶
xfail/skipif マーカーの文字列条件を評価するために使用されるグローバル辞書を構築する際に呼び出されます。
マーカーの条件が、コレクション時に取得するのが高価または不可能なオブジェクトを必要とする場合に便利です。 これは通常のブール条件によって必要とされます。
Added in version 6.2.
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムの親ディレクトリにある conftest ファイルのみが参照されます。
コレクションが完了した後、アイテムの順序を変更したり、削除したり、テストアイテムを修正したりできます:
- pytest_collection_modifyitems(session, config, items)[ソース]¶
コレクションが実行された後に呼び出されます。 アイテムをフィルタリングまたはインプレースで再注文することができます。
アイテムが選択解除(
itemsからフィルタリング)された場合、他のプラグインに適切に通知するために、フックpytest_deselectedを選択解除されたアイテムで明示的に呼び出す必要があります。 例えば、config.hook.pytest_deselected(deselected_items)のように。- パラメータ:
conftest プラグインで使用する¶
任意の conftest プラグインがこのフックを実装できます。
注釈
このフックが conftest.py ファイルに実装されている場合、実装されている conftest.py の下にあるアイテムだけでなく、すべての収集されたアイテムを常に受け取ります。
テスト実行(runtest)フック¶
すべての runtest 関連のフックは pytest.Item オブジェクトを受け取ります。
- pytest_runtestloop(session)[ソース]¶
メインの runtest ループを実行します(コレクションが終了した後)。
デフォルトのフック実装は、コレクションが失敗した場合や
collectonlypytest オプションが設定されている場合を除き、セッションで収集されたすべてのアイテム(session.items)に対して runtest プロトコルを実行します。任意の時点で
pytest.exit()が呼び出された場合、ループは直ちに終了します。任意の時点で
session.shouldfailまたはsession.shouldstopが設定された場合、現在のアイテムの runtest プロトコルが終了した後にループが終了します。- パラメータ:
session (Session) -- pytest セッションオブジェクト。
最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。 戻り値は使用されませんが、さらなる処理を停止します。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。
- pytest_runtest_protocol(item, nextitem)[ソース]¶
単一のテストアイテムに対して runtest プロトコルを実行します。
デフォルトの runtest プロトコルは次のとおりです(詳細は個々のフックを参照してください):
pytest_runtest_logstart(nodeid, location)- セットアップフェーズ:
call = pytest_runtest_setup(item)(CallInfo(when="setup")でラップ)report = pytest_runtest_makereport(item, call)pytest_runtest_logreport(report)インタラクティブな例外が発生した場合は
pytest_exception_interact(call, report)
- セットアップが成功し、
setuponlypytest オプションが設定されていない場合のコールフェーズ: call = pytest_runtest_call(item)(CallInfo(when="call")でラップ)report = pytest_runtest_makereport(item, call)pytest_runtest_logreport(report)インタラクティブな例外が発生した場合は
pytest_exception_interact(call, report)
- セットアップが成功し、
- ティアダウンフェーズ:
call = pytest_runtest_teardown(item, nextitem)``(``CallInfo(when="teardown")でラップ)report = pytest_runtest_makereport(item, call)pytest_runtest_logreport(report)インタラクティブな例外が発生した場合は
pytest_exception_interact(call, report)
pytest_runtest_logfinish(nodeid, location)
- パラメータ:
最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。 戻り値は使用されませんが、さらなる処理を停止します。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。
- pytest_runtest_logstart(nodeid, location)[ソース]¶
単一のアイテムに対して runtest プロトコルの実行を開始する際に呼び出されます。
runtest プロトコルの説明については
pytest_runtest_protocolを参照してください。- パラメータ:
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_runtest_logfinish(nodeid, location)[ソース]¶
単一のアイテムに対して runtest プロトコルの実行を終了する際に呼び出されます。
runtest プロトコルの説明については
pytest_runtest_protocolを参照してください。- パラメータ:
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_runtest_setup(item)[ソース]¶
テストアイテムのセットアップフェーズを実行するために呼び出されます。
デフォルトの実装は、
itemおよびそのすべての親(まだセットアップされていないもの)に対してsetup()を実行します。 これには、アイテムが必要とするフィクスチャの値を取得すること(まだ取得されていない場合)が含まれます。- パラメータ:
item (Item) -- アイテム。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_runtest_call(item)[ソース]¶
テストアイテムのテストを実行するために呼び出されます(コールフェーズ)。
デフォルトの実装は
item.runtest()を呼び出します。- パラメータ:
item (Item) -- アイテム。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_runtest_teardown(item, nextitem)[ソース]¶
テストアイテムのティアダウンフェーズを実行するために呼び出されます。
デフォルトの実装はファイナライザを実行し、
itemおよびそのすべての親(ティアダウンが必要なもの)に対してteardown()を呼び出します。 これには、アイテムが必要とするフィクスチャのティアダウンフェーズの実行(スコープ外になる場合)が含まれます。- パラメータ:
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_runtest_makereport(item, call)[ソース]¶
各セットアップ、コール、およびティアダウン runtest フェーズに対して
TestReportを作成するために呼び出されます。runtest プロトコルの説明については
pytest_runtest_protocolを参照してください。最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
これらのフックのデフォルト実装については、_pytest.runner および _pytest.pdb を参照してください。 これらは _pytest.capture とその入出力キャプチャと連携して、テスト失敗時にインタラクティブデバッグに直ちに移行します。
- pytest_pyfunc_call(pyfuncitem)[ソース]¶
基礎となるテスト関数を呼び出します。
最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
- パラメータ:
pyfuncitem (Function) -- 関数アイテム。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
レポートフック¶
セッション関連のレポートフック:
- pytest_collectstart(collector)[ソース]¶
コレクターが収集を開始します。
- パラメータ:
collector (Collector) -- コレクター。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたコレクターに対して、コレクターのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_make_collect_report(collector)[ソース]¶
collector.collect()を実行し、CollectReportを返します。最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
- パラメータ:
collector (Collector) -- コレクター。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたコレクターに対して、コレクターのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_itemcollected(item)[ソース]¶
テストアイテムを収集しました。
- パラメータ:
item (Item) -- アイテム。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_collectreport(report)[ソース]¶
コレクターが収集を終了しました。
- パラメータ:
report (CollectReport) -- 収集レポート。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたコレクターに対して、コレクターのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_deselected(items)[ソース]¶
キーワードなどで選択解除されたテストアイテムに対して呼び出されます。
このフックには、プラグインのための 2 つの統合側面があることに注意してください:
選択解除されたアイテムを通知するために 実装 できます。
アイテムが選択解除されたときに、他のプラグインに適切に通知するために
pytest_collection_modifyitems実装から 呼び出される 必要があります。
複数回呼び出される場合があります。
- パラメータ:
items (Sequence[Item]) -- アイテム。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。
- pytest_report_header(config, start_path, startdir)[ソース]¶
ターミナルレポートのヘッダー情報として表示される文字列または文字列のリストを返します。
- パラメータ:
config (Config) -- pytest 設定オブジェクト。
start_path (pathlib.Path) -- 開始ディレクトリ。
startdir (LEGACY_PATH) -- 開始ディレクトリ(非推奨)。
注釈
プラグインによって返された行は、それ以前に実行されたプラグインの行の前に表示されます。 行を最初に表示したい場合は、trylast=True を使用してください。
バージョン 7.0.0 で変更:
start_pathパラメータは、startdirパラメータのpathlib.Path相当として追加されました。startdirパラメータは非推奨となりました。conftest プラグインで使用する¶
このフックは initial conftests に対してのみ呼び出されます。
- pytest_report_collectionfinish(config, start_path, startdir, items)[ソース]¶
コレクションが正常に終了した後に表示される文字列または文字列のリストを返します。
これらの文字列は、標準の "collected X items" メッセージの後に表示されます。
Added in version 3.2.
- パラメータ:
config (Config) -- pytest 設定オブジェクト。
start_path (pathlib.Path) -- 開始ディレクトリ。
startdir (LEGACY_PATH) -- 開始ディレクトリ(非推奨)。
items (Sequence[Item]) -- 実行される予定の pytest アイテムのリスト。 このリストは変更しないでください。
注釈
プラグインによって返された行は、それ以前に実行されたプラグインの行の前に表示されます。 行を最初に表示したい場合は、trylast=True を使用してください。
バージョン 7.0.0 で変更:
start_pathパラメータは、startdirパラメータのpathlib.Path相当として追加されました。startdirパラメータは非推奨となりました。conftest プラグインで使用する¶
任意の conftest プラグインがこのフックを実装できます。
- pytest_report_teststatus(report, config)[ソース]¶
ステータスレポートのために、結果カテゴリ、短い文字、および詳細な単語を返します。
結果カテゴリは、結果をカウントするカテゴリです。 例えば "passed"、"skipped"、"error" または空文字列です。
短い文字は、テストの進行中に表示されます。 例えば "."、"s"、"E" または空文字列です。
詳細な単語は、詳細モードでテストの進行中に表示されます。 例えば "PASSED"、"SKIPPED"、"ERROR" または空文字列です。
pytest はレポートの結果に応じてこれらを暗黙的にスタイル設定する場合があります。 明示的なスタイル設定を提供するには、詳細な単語のタプルを返します。 例えば
"rerun", "R", ("RERUN", {"yellow": True})のように。- パラメータ:
report (CollectReport | TestReport) -- ステータスを返すレポートオブジェクト。
config (Config) -- pytest 設定オブジェクト。
- 戻り値:
テストステータス。
- 戻り値の型:
TestShortLogReport | tuple[str, str, str | tuple[str, Mapping[str, bool]]]
最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
conftest プラグインで使用する¶
任意の conftest プラグインがこのフックを実装できます。
- pytest_report_to_serializable(config, report)[ソース]¶
レポートオブジェクトをシリアライズして、例えば JSON に変換するなど、ワイヤー越しに送信するのに適したデータ構造にします。
- パラメータ:
config (Config) -- pytest 設定オブジェクト。
report (CollectReport | TestReport) -- レポート。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 詳細は、このフックを呼び出すプラグインによって異なる場合があります。
- pytest_report_from_serializable(config, data)[ソース]¶
pytest_report_to_serializableで以前にシリアライズされたレポートオブジェクトを復元します。- パラメータ:
config (Config) -- pytest 設定オブジェクト。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 詳細は、このフックを呼び出すプラグインによって異なる場合があります。
- pytest_terminal_summary(terminalreporter, exitstatus, config)[ソース]¶
ターミナルサマリーレポートにセクションを追加します。
- パラメータ:
Added in version 4.2:
configパラメータ。conftest プラグインで使用する¶
任意の conftest プラグインがこのフックを実装できます。
- pytest_fixture_setup(fixturedef, request)[ソース]¶
フィクスチャのセットアップ実行を行います。
- パラメータ:
fixturedef (FixtureDef[Any]) -- フィクスチャ定義オブジェクト。
request (SubRequest) -- フィクスチャリクエストオブジェクト。
- 戻り値:
フィクスチャ関数の呼び出しの戻り値。
- 戻り値の型:
object | None
最初の None でない結果で停止します。 詳細は firstresult:最初の None でない結果で停止 を参照してください。
注釈
フィクスチャ関数が None を返す場合、このフック関数の他の実装は firstresult:最初の None でない結果で停止 オプションの動作に従って呼び出され続けます。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたフィクスチャに対して、フィクスチャスコープのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_fixture_post_finalizer(fixturedef, request)[ソース]¶
フィクスチャのティアダウン後、キャッシュがクリアされる前に呼び出されます。 そのため、フィクスチャ結果
fixturedef.cached_resultはまだ利用可能です(Noneではありません)。- パラメータ:
fixturedef (FixtureDef[Any]) -- フィクスチャ定義オブジェクト。
request (SubRequest) -- フィクスチャリクエストオブジェクト。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたフィクスチャに対して、フィクスチャスコープのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_warning_recorded(warning_message, when, nodeid, location)[ソース]¶
内部 pytest 警告プラグインによってキャプチャされた警告を処理します。
- パラメータ:
warning_message (warnings.WarningMessage) -- キャプチャされた警告。 これは
warnings.catch_warningsによって生成されたオブジェクトと同じであり、warnings.showwarning()のパラメータと同じ属性を持ちます。when (Literal['config', 'collect', 'runtest']) --
警告がキャプチャされた時点を示します。 可能な値:
"config": pytest の設定/初期化段階中。"collect": テストコレクション中。"runtest": テスト実行中。
nodeid (str) -- アイテムの完全な ID。 特定のノードに特有でない警告の場合は空文字列。
location (tuple[str, int, str] | None) -- 利用可能な場合、キャプチャされた警告の実行コンテキスト(ファイル名、行番号、関数)に関する情報を保持します。 実行コンテキストがモジュールレベルの場合、
functionは <module> と評価されます。
Added in version 6.0.
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 警告が特定のノードに特有である場合、そのノードの親ディレクトリにある conftest ファイルのみが参照されます。
テスト実行に関するレポートのための中央フック:
- pytest_runtest_logreport(report)[ソース]¶
各セットアップ、コール、およびティアダウン runtest フェーズに対して生成された
TestReportを処理します。runtest プロトコルの説明については
pytest_runtest_protocolを参照してください。conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
アサーション関連のフック:
- pytest_assertrepr_compare(config, op, left, right)[ソース]¶
失敗したアサーション式の比較に対する説明を返します。
カスタムの説明がない場合は None を返し、それ以外の場合は文字列のリストを返します。 文字列は改行で結合されますが、文字列内の改行はエスケープされます。 最初の行以外は少しインデントされることに注意してください。 最初の行は要約のためのものです。
- パラメータ:
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
- pytest_assertion_pass(item, lineno, orig, expl)[ソース]¶
アサーションが成功するたびに呼び出されます。
Added in version 5.0.
このフックを使用して、成功したアサーションの後に何らかの処理を行います。 元のアサーション情報は
orig文字列にあり、pytest によって内省されたアサーション情報はexpl文字列にあります。このフックは
enable_assertion_pass_hookini ファイルオプションによって明示的に有効にする必要があります:[pytest] enable_assertion_pass_hook=true
このオプションを有効にする際には、プロジェクトディレクトリおよびインタープリタライブラリ内の .pyc をクリーンアップ する必要があります。 アサーションは再書き込みが必要です。
- パラメータ:
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたアイテムに対して、アイテムのディレクトリおよびその親ディレクトリにある conftest ファイルのみが参照されます。
デバッグ/インタラクションフック¶
例外に対する特別なレポートやインタラクションに使用できるフックがいくつかあります:
- pytest_internalerror(excrepr, excinfo)[ソース]¶
内部エラーに対して呼び出されます。
INTERNALERROR メッセージを直接 sys.stderr に出力するフォールバック処理を抑制するには True を返します。
- パラメータ:
excrepr (ExceptionRepr) -- 例外の再現オブジェクト。
excinfo (ExceptionInfo[BaseException]) -- 例外情報。
conftest プラグインで使用する¶
任意の conftest プラグインがこのフックを実装できます。
- pytest_keyboard_interrupt(excinfo)[ソース]¶
キーボード割り込みに対して呼び出されます。
- パラメータ:
excinfo (ExceptionInfo[KeyboardInterrupt | Exit]) -- 例外情報。
conftest プラグインで使用する¶
任意の conftest プラグインがこのフックを実装できます。
- pytest_exception_interact(node, call, report)[ソース]¶
インタラクティブに処理できる可能性のある例外が発生したときに呼び出されます。
コレクション中に呼び出される場合があります(
pytest_make_collect_reportを参照)。 この場合、reportはCollectReportです。アイテムの runtest 中に呼び出される場合があります(
pytest_runtest_protocolを参照)。 この場合、reportはTestReportです。発生した例外が
skip.Exceptionのような内部例外である場合、このフックは呼び出されません。- パラメータ:
call (CallInfo[Any]) -- 呼び出し情報。 例外を含みます。
report (CollectReport | TestReport) -- コレクションまたはテストレポート。
conftest プラグインで使用する¶
任意の conftest ファイルがこのフックを実装できます。 指定されたノードに対して、そのノードの親ディレクトリにある conftest ファイルのみが参照されます。
コレクションツリーオブジェクト¶
これらは、コレクションツリーを構成するコレクターおよびアイテムクラス(総称して「ノード」と呼ばれます)です。
ノード¶
- class Node[ソース]¶
ベースクラス:
ABCCollectorおよびItemの基本クラス。 これらはテストコレクションツリーのコンポーネントです。Collectorはツリーの内部ノードであり、Itemはリーフノードです。- fspath: LEGACY_PATH¶
LEGACY_PATHのpath属性のコピー。Item.reportinfoなど、まだpathlib.Pathに移行されていないメソッドの使用を意図しています。 将来のリリースで非推奨となる予定です。 代わりにpathを使用してください。
- parent¶
親コレクターノード。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
- classmethod from_parent(parent, **kw)[ソース]¶
ノードの公開コンストラクター。
この間接参照は、ノードコンストラクターから脆弱なロジックを削除できるようにするために導入されました。
サブクラスは、コンストラクションをオーバーライドする際に
super().from_parent(...)を使用できます。- パラメータ:
parent (Node) -- このノードの親ノード。
- warn(warning)[ソース]¶
このノードに対して警告を発行します。
警告はテストセッションの後に表示されます。 明示的に抑制されない限り。
- パラメータ:
warning (Warning) -- 発行する警告インスタンス。
- 例外:
ValueError --
warningインスタンスが Warning のサブクラスでない場合。
使用例:
node.warn(PytestWarning("some message")) node.warn(UserWarning("some message"))
バージョン 6.2 で変更:
Warningの任意のサブクラスが受け入れられるようになりました。 以前はPytestWarningのサブクラスのみでした。
- add_marker(marker, append=True)[ソース]¶
マーカーオブジェクトをノードに動的に追加します。
- パラメータ:
marker (str | MarkDecorator) -- マーカー。
append (bool) -- マーカーを追加するか、先頭に追加するか。
- get_closest_marker(name: str) Mark | None[ソース]¶
- get_closest_marker(name: str, default: Mark) Mark
名前に一致する最初のマーカーを返します。 最も近いレベル(例えば関数)から遠いレベル(例えばモジュールレベル)まで。
- パラメータ:
default -- マーカーが見つからなかった場合のフォールバック戻り値。
name -- フィルタリングする名前。
- addfinalizer(fin)[ソース]¶
このノードが終了するときに引数なしで呼び出される関数を登録します。
このメソッドは、このノードがセットアップチェーンでアクティブな場合にのみ呼び出すことができます。 例えば self.setup() 中に。
- getparent(cls)[ソース]¶
指定されたクラスのインスタンスである最も近い親ノード(自己を含む)を取得します。
- パラメータ:
cls (type[_NodeType]) -- 検索するノードクラス。
- 戻り値:
見つかった場合のノード。
- 戻り値の型:
_NodeType | None
- repr_failure(excinfo, style=None)[ソース]¶
コレクションまたはテストの失敗の表現を返します。
- パラメータ:
excinfo (ExceptionInfo[BaseException]) -- 失敗の例外情報。
コレクター¶
- class Collector[ソース]¶
-
すべてのコレクターの基本クラス。
コレクターは
collect()を通じて子を作成し、コレクションツリーを反復的に構築します。- repr_failure(excinfo)[ソース]¶
コレクションの失敗の表現を返します。
- パラメータ:
excinfo (ExceptionInfo[BaseException]) -- 失敗の例外情報。
- parent¶
親コレクターノード。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
アイテム¶
- class Item[ソース]¶
-
すべてのテスト呼び出しアイテムの基本クラス。
単一の関数に対して複数のテスト呼び出しアイテムが存在する場合があることに注意してください。
- parent¶
親コレクターノード。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
- add_report_section(when, key, content)[ソース]¶
新しいレポートセクションを追加します。 標準出力および標準エラーキャプチャ出力を追加するために内部で行われることと同様です:
item.add_report_section("call", "stdout", "report section contents")
ファイル¶
- class File[ソース]¶
ベースクラス:
FSCollector,ABCファイルからテストを収集するための基本クラス。
- parent¶
親コレクターノード。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
FSCollector¶
- class FSCollector[ソース]¶
-
ファイルシステムコレクターの基本クラス。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
- parent¶
親コレクターノード。
セッション¶
- final class Session[ソース]¶
ベースクラス:
Collectorコレクションツリーのルート。
Sessionは pytest に引数として渡された初期パスを収集します。- exception Interrupted¶
ベースクラス:
KeyboardInterruptテスト実行が中断されたことを示します。
- isinitpath(path, *, with_parents=False)[ソース]¶
パスは初期パスですか?
初期パスは、コマンドラインで pytest に明示的に渡されたパスです。
- パラメータ:
with_parents (bool) -- 設定されている場合、パスが初期パスの親である場合も True を返します。
バージョン 8.0 で変更:
with_parentsパラメータが追加されました。
- perform_collect(args: Sequence[str] | None = None, genitems: Literal[True] = True) Sequence[Item][ソース]¶
- perform_collect(args: Sequence[str] | None = None, genitems: bool = True) Sequence[Item | Collector]
このセッションのコレクションフェーズを実行します。
これはデフォルトの
pytest_collectionフック実装によって呼び出されます。 詳細については、このフックのドキュメントを参照してください。 テスト目的で、新しいSessionに対して直接呼び出すこともできます。この関数は通常、セッションから収集されたコレクターを再帰的に展開してそのアイテムにし、アイテムのみを返します。 テスト目的で、
genitems=Falseを渡すことでこれを抑制できます。 この場合、戻り値にはこれらのコレクターが未展開のまま含まれ、session.itemsは空です。
- parent¶
親コレクターノード。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
パッケージ¶
- class Package[ソース]¶
ベースクラス:
DirectoryPython パッケージ内のファイルおよびディレクトリのコレクター --
__init__.pyファイルを持つディレクトリ。注釈
Directories without an
__init__.pyfile are instead collected byDirby default. Both areDirectorycollectors.バージョン 8.0 で変更: 現在は
Directoryから継承しています。- parent¶
親コレクターノード。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
モジュール¶
クラス¶
- class Class[ソース]¶
ベースクラス:
PyCollectorPython クラス内のテストメソッド(およびネストされたクラス)のコレクター。
- parent¶
親コレクターノード。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
関数¶
- class Function[ソース]¶
ベースクラス:
PyobjMixin,ItemPython テスト関数のセットアップおよび実行を担当するアイテム。
- パラメータ:
name -- パラメータ化によって追加された装飾などを含む完全な関数名(
my_func[my_param])。parent -- 親ノード。
config -- pytest 設定オブジェクト。
callspec -- 指定された場合、この関数はパラメータ化されており、callspec にはパラメータ化に関するメタ情報が含まれます。
callobj -- 指定された場合、関数が呼び出されたときに呼び出されるオブジェクト。 それ以外の場合、callobj は
parentからoriginalnameを使用して取得されます。keywords -- 関数オブジェクトにバインドされたキーワード。 "-k" マッチングのため。
session -- pytest セッションオブジェクト。
fixtureinfo -- このフィクスチャノードで既に解決されたフィクスチャ情報。
originalname -- 基礎となる関数オブジェクトにアクセスするために使用する属性名。 デフォルトは
nameです。 名前が元の名前と異なる場合、例えばパラメータ化によって追加された装飾が含まれる場合(my_func[my_param])、これを設定します。
- originalname¶
装飾なしの元の関数名(例えばパラメータ化は関数名に
"[...]"サフィックスを追加します)。parentから基礎となる関数オブジェクトにアクセスするために使用されます(callobjが明示的に指定されていない場合)。Added in version 3.0.
- property function¶
基礎となる Python の 'function' オブジェクト。
- property instance¶
関数がバインドされている Python インスタンスオブジェクト。
テストメソッドでない場合、None を返します。 例えば、スタンドアロンのテスト関数、クラス、またはモジュールの場合。
- repr_failure(excinfo)[ソース]¶
コレクションまたはテストの失敗の表現を返します。
- パラメータ:
excinfo (ExceptionInfo[BaseException]) -- 失敗の例外情報。
- parent¶
親コレクターノード。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
関数定義¶
オブジェクト¶
fixtures または hooks からアクセス可能なオブジェクト、または pytest からインポート可能なオブジェクト。
CallInfo¶
- final class CallInfo[ソース]¶
関数呼び出しの結果/例外情報。
- excinfo: ExceptionInfo[BaseException] | None¶
呼び出し時にキャプチャされた例外(発生した場合)。
- when: Literal['collect', 'setup', 'call', 'teardown']¶
呼び出しのコンテキスト:"collect"、"setup"、"call"、または "teardown"。
- property result: TResult¶
呼び出しの戻り値(例外が発生しなかった場合)。
excinfo が None の場合にのみアクセスできます。
- classmethod from_call(func, when, reraise=None)[ソース]¶
関数を呼び出し、結果を CallInfo にラップします。
- パラメータ:
func (Callable[[], _pytest.runner.TResult]) -- 呼び出す関数。 引数なしで呼び出されます。
when (Literal['collect', 'setup', 'call', 'teardown']) -- 関数が呼び出されるフェーズ。
reraise (type[BaseException] | tuple[type[BaseException], ...] | None) -- 関数によって発生した場合に CallInfo にラップされずに伝播する例外または例外群。
CollectReport¶
- final class CollectReport[ソース]¶
ベースクラス:
BaseReportコレクションレポートオブジェクト。
レポートには任意の追加属性を含めることができます。
- longrepr: None | ExceptionInfo[BaseException] | tuple[str, int, str] | str | TerminalRepr¶
None または失敗の表現。
- result¶
収集されたアイテムおよびコレクションノード。
- sections: list[tuple[str, str]]¶
テストレポートの追加情報を含む
(heading, content)の文字列タプル。 pytest はstdout、stderrからキャプチャされたテキストやインターセプトされたログイベントを追加するために使用します。 他のプラグインがレポートに任意の情報を追加するために使用することもできます。
- property count_towards_summary: bool¶
実験的 このレポートがテストセッションの最後に表示される合計("1 passed, 1 failure" など)にカウントされるかどうか。
注釈
この関数は 実験的 と見なされているため、パッチリリースでも変更される可能性があることに注意してください。
Config¶
- final class Config[ソース]¶
設定値、プラグインマネージャー、およびプラグインフックへのアクセス。
- パラメータ:
pluginmanager (PytestPluginManager) -- pytest プラグインマネージャー。
invocation_params (InvocationParams) --
pytest.main()呼び出しに関するパラメータを含むオブジェクト。
- final class InvocationParams(*, args, plugins, dir)[ソース]¶
pytest.main()呼び出し中に渡されたパラメータを保持します。オブジェクトの属性は読み取り専用です。
Added in version 5.1.
注釈
環境変数
PYTEST_ADDOPTSおよびaddoptsini オプションは pytest によって処理され、args属性には含まれないことに注意してください。InvocationParamsにアクセスするプラグインはそれを認識している必要があります。- args: tuple[str, ...]¶
pytest.main()に渡されたコマンドライン引数。
- dir: Path¶
pytest.main()が呼び出されたディレクトリ。 :type: pathlib.Path
- class ArgsSource(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[ソース]¶
テスト引数のソースを示します。
Added in version 7.2.
- ARGS = 1¶
コマンドライン引数。
- INVOCATION_DIR = 2¶
呼び出しディレクトリ。
- TESTPATHS = 3¶
'testpaths' 設定値。
- option¶
属性としてコマンドラインオプションにアクセスします。
- Type:
- invocation_params¶
pytest が呼び出されたパラメータ。
- Type:
- pluginmanager¶
プラグインマネージャーはプラグインの登録とフックの呼び出しを処理します。
- Type:
- property inipath: Path | None¶
configfile へのパス。
Added in version 6.1.
- issue_config_time_warning(warning, stacklevel)[ソース]¶
"configure" ステージ中に警告を発行および処理します。
pytest_configure中は、catch_warnings_for_item関数を使用して警告をキャプチャすることはできません。pytest_configureの周りにフックラッパーを配置することはできないためです。この関数は主に、
pytest_configure(または同様のステージ) 中に警告を発行する必要があるプラグインを対象としています。
- addinivalue_line(name, line)[ソース]¶
ini ファイルオプションに行を追加します。 オプションは宣言されている必要がありますが、まだ設定されていない場合は、その行が値の最初の行になります。
- getini(name)[ソース]¶
ini ファイル から設定値を返します。
If a configuration value is not defined in an ini file, then the
defaultvalue provided while registering the configuration throughparser.addiniwill be returned. Please note that you can even provideNoneas a valid default value.parser.addiniを使用して設定を登録する際にdefault値が提供されていない場合、parser.addiniに渡されたtypeパラメータに基づいてデフォルト値が返されます。typeに基づくデフォルト値は次のとおりです:paths、pathlist、args、およびlinelist: 空のリスト[]bool:Falsestring: 空の文字列""parser.addiniを使用して設定を登録する際にdefaultもtypeパラメータも渡されない場合、設定は文字列として扱われ、デフォルトの空の文字列 '' が返されます。指定された名前が以前の
parser.addini呼び出し(通常はプラグインから)を通じて登録されていない場合、ValueError が発生します。
- getoption(name, default=<NOTSET>, skip=False)[ソース]¶
コマンドラインオプションの値を返します。
- パラメータ:
name (str) -- オプションの名前。 リテラル
--OPTオプションを指定することもできます。default -- その名前のオプションが
pytest_addoptionを通じて 宣言 されていない場合のフォールバック値。 このパラメータは、オプションが 宣言 されている場合、オプションの値がNoneであっても無視されます。skip (bool) --
Trueの場合、オプションが宣言されていないか、値がNoneの場合にpytest.skip()を発生させます。Trueであっても、デフォルトが指定されている場合はスキップの代わりにその値が返されます。
- VERBOSITY_ASSERTIONS: Final = 'assertions'¶
失敗したアサーションの詳細度タイプ(
verbosity_assertionsを参照)。
- VERBOSITY_TEST_CASES: Final = 'test_cases'¶
テストケース実行の詳細度タイプ(
verbosity_test_casesを参照)。
- get_verbosity(verbosity_type=None)[ソース]¶
詳細度タイプの詳細度レベルを取得します。
- パラメータ:
verbosity_type (str | None) -- 詳細度レベルを取得するための詳細度タイプ。 指定されたタイプに対してレベルが設定されている場合、その値が返されます。 指定されたタイプが既知の詳細度タイプでない場合、グローバル詳細度レベルが返されます。 指定されたタイプが None(デフォルト)の場合、グローバル詳細度レベルが返されます。
詳細度タイプのレベルを設定するには、設定ファイルに設定名と詳細度レベルの数値を設定する必要があります。 特別な値 "auto" を使用して、グローバル詳細度レベルを明示的に使用することができます。
例:
# content of pytest.ini [pytest] verbosity_assertions = 2
pytest -vprint(config.get_verbosity()) # 1 print(config.get_verbosity(Config.VERBOSITY_ASSERTIONS)) # 2
Dir¶
- final class Dir[ソース]¶
ファイルシステムディレクトリ内のファイルのコレクター。
Added in version 8.0.
- classmethod from_parent(parent, *, path)[ソース]¶
公開コンストラクター。
- パラメータ:
parent (nodes.Collector) -- この Dir の親コレクター。
path (pathlib.Path) -- ディレクトリのパス。
- parent¶
親コレクターノード。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
ディレクトリ¶
- class Directory[ソース]¶
ディレクトリからファイルを収集するための基本クラス。
基本的なディレクトリコレクターは次のことを行います: ディレクトリ内のファイルおよびサブディレクトリを調べ、
pytest_collect_directoryおよびpytest_collect_fileフックを呼び出してそれらのコレクターを作成します。 ただし、pytest_ignore_collectを使用して無視されていないことを確認します。デフォルトのディレクトリコレクターは
DirおよびPackageです。Added in version 8.0.
- parent¶
親コレクターノード。
- path: pathlib.Path¶
このノードが収集されたファイルシステムパス(None の場合があります)。
ExceptionInfo¶
- final class ExceptionInfo[ソース]¶
sys.exc_info() オブジェクトをラップし、トレースバックのナビゲートを支援します。
- classmethod from_exception(exception, exprinfo=None)[ソース]¶
既存の例外に対する ExceptionInfo を返します。
例外は非
Noneの__traceback__属性を持っている必要があります。 そうでない場合、この関数はアサーションエラーで失敗します。 これは、例外が発生したか、with_traceback()メソッドでトレースバックが追加されたことを意味します。- パラメータ:
exprinfo (str | None) -- A text string helping to determine if we should strip
AssertionErrorfrom the output. Defaults to the exception message/__str__().
Added in version 7.4.
- classmethod from_exc_info(exc_info, exprinfo=None)[ソース]¶
Like
from_exception(), but using old-style exc_info tuple.
- classmethod from_current(exprinfo=None)[ソース]¶
現在のトレースバックに一致する ExceptionInfo を返します。
警告
実験的 API
- パラメータ:
exprinfo (str | None) -- A text string helping to determine if we should strip
AssertionErrorfrom the output. Defaults to the exception message/__str__().
- property value: E¶
例外値。
- property tb: TracebackType¶
例外の生のトレースバック。
- property traceback: Traceback¶
トレースバック。
- exconly(tryshort=False)[ソース]¶
例外を文字列として返します。
'tryshort' が True に解決され、例外が AssertionError の場合、例外表現の実際の例外部分のみが返されます(したがって、'AssertionError: ' は先頭から削除されます)。
- errisinstance(exc)[ソース]¶
例外が exc のインスタンスである場合は True を返します。
代わりに
isinstance(excinfo.value, exc)を使用することを検討してください。
- getrepr(showlocals=False, style='long', abspath=False, tbfilter=True, funcargs=False, truncate_locals=True, truncate_args=True, chain=True)[ソース]¶
この例外情報の str() 可能な表現を返します。
- パラメータ:
showlocals (bool) -- トレースバックエントリごとにローカルを表示します。
style=="native"の場合は無視されます。style (str) -- long|short|line|no|native|value トレースバックスタイル。
abspath (bool) -- パスを絶対パスに変更するか、そのままにするか。
tbfilter (bool | Callable[[ExceptionInfo[BaseException]], Traceback]) -- トレースバックエントリのフィルタ。 * false の場合、エントリを非表示にしません。 * true の場合、内部エントリおよびローカル変数
__tracebackhide__ = Trueを含むエントリを非表示にします。 * callable の場合、フィルタリングを callable に委任します。styleが"native"の場合は無視されます。funcargs (bool) -- トレースバックエントリごとにフィクスチャ(レガシー目的の "funcargs")を表示します。
truncate_locals (bool) --
showlocals==Trueの場合、ローカルが安全に文字列として表現できることを確認します。truncate_args (bool) --
showargs==Trueの場合、引数が安全に文字列として表現できることを確認します。chain (bool) -- Python 3 で連鎖した例外を表示するかどうか。
バージョン 3.9 で変更:
chainパラメータが追加されました。
- match(regexp)[ソース]¶
正規表現
regexpが例外の文字列表現に一致するかどうかをre.search()を使用して確認します。一致する場合は
Trueが返され、一致しない場合はAssertionErrorが発生します。
- group_contains(expected_exception, *, match=None, depth=None)[ソース]¶
キャプチャされた例外グループが一致する例外を含むかどうかを確認します。
- パラメータ:
expected_exception (Type[BaseException] | Tuple[Type[BaseException]]) -- 予期される例外タイプ、または複数の可能な例外タイプのいずれかが予期される場合のタプル。
match (str | Pattern[str] | None) -- 指定されている場合、正規表現を含む文字列、または正規表現オブジェクト。 例外の文字列表現およびその
PEP-678 <https://peps.python.org/pep-0678/>__notes__に対してre.search()を使用してテストされます。 特殊文字 を含む可能性のあるリテラル文字列に一致させるには、パターンを最初にre.escape()でエスケープできます。depth (Optional[int]) -- None の場合、一致する例外を任意のネスティング深度で検索します。 >= 1 の場合、指定された深度で例外が一致する場合にのみ一致します(深度 = 1 は最上位の例外グループに含まれる例外)。
Added in version 8.0.
ExitCode¶
- final class ExitCode(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[ソース]¶
pytest によってエンコードされた有効な終了コード。
現在、ユーザーおよびプラグインは他の終了コードも提供する場合があります。
Added in version 5.0.
- OK = 0¶
テストが成功しました。
- TESTS_FAILED = 1¶
テストが失敗しました。
- INTERRUPTED = 2¶
pytest が中断されました。
- INTERNAL_ERROR = 3¶
内部エラーが発生しました。
- USAGE_ERROR = 4¶
pytest が誤用されました。
- NO_TESTS_COLLECTED = 5¶
pytest がテストを見つけられませんでした。
FixtureDef¶
MarkDecorator¶
- class MarkDecorator[ソース]¶
テスト関数およびクラスにマークを適用するためのデコレーター。
MarkDecoratorsはpytest.markで作成されます:mark1 = pytest.mark.NAME # Simple MarkDecorator mark2 = pytest.mark.NAME(name1=value) # Parametrized MarkDecorator
その後、テスト関数にデコレーターとして適用できます:
@mark2 def test_function(): pass
MarkDecoratorが呼び出されると、次のことが行われます:単一のクラスを唯一の位置引数として追加のキーワード引数なしで呼び出された場合、マークをクラスにアタッチし、そのクラス内で見つかったすべてのテストケースに自動的に適用されるようにします。
単一の関数を唯一の位置引数として追加のキーワード引数なしで呼び出された場合、マークを関数にアタッチし、
MarkDecoratorに内部的に格納されているすべての引数を含みます。他のいずれかの場合に呼び出された場合、元の
MarkDecoratorの内容をこの呼び出しに渡された引数で更新した新しいMarkDecoratorインスタンスを返します。
注:上記のルールにより、
MarkDecoratorが追加のキーワード引数や位置引数なしで唯一の位置引数として単一の関数またはクラス参照のみを格納することはできません。 これを回避するには、with_args()を使用できます。
MarkGenerator¶
- final class MarkGenerator[ソース]¶
MarkDecoratorオブジェクトのファクトリ -pytest.markシングルトンインスタンスとして公開されます。例:
import pytest @pytest.mark.slowtest def test_function(): pass
'slowtest'
Markをtest_functionに適用します。
Mark¶
Metafunc¶
- final class Metafunc[ソース]¶
pytest_generate_testsフックに渡されるオブジェクト。テスト関数を検査し、テスト関数が定義されているクラスまたはモジュールで指定されたテスト構成または値に従ってテストを生成するのに役立ちます。
- definition¶
基礎となる
_pytest.python.FunctionDefinitionへのアクセス。
- config¶
テストセッションの
pytest.Configオブジェクトへのアクセス。
- module¶
テスト関数が定義されているモジュールオブジェクト。
- function¶
基礎となる Python テスト関数。
- fixturenames¶
テスト関数が必要とするフィクスチャ名のセット。
- cls¶
テスト関数が定義されているクラスオブジェクト、または
None。
- parametrize(argnames, argvalues, indirect=False, ids=None, scope=None, *, _param_mark=None)[ソース]¶
指定された argnames に対して argvalues のリストを使用して基になるテスト関数に新しい呼び出しを追加します。 パラメータ化は収集フェーズ中に実行されます。 高価なリソースをセットアップする必要がある場合は、テストのセットアップ時ではなく、それを行うために indirect を設定することについて調べてください。
テスト関数ごとに複数回呼び出すことができます (ただし、異なる引数名のみ) 、この場合、各呼び出しはすべての前のパラメータ化をパラメータ化します。 例:
unparametrized: t parametrize ["x", "y"]: t[x], t[y] parametrize [1, 2]: t[x-1], t[x-2], t[y-1], t[y-2]
- パラメータ:
argnames (str | Sequence[str]) -- 1 つ以上の引数名を示すカンマ区切りの文字列、または引数文字列のリスト/タプル。
argvalues (Iterable[_pytest.mark.structures.ParameterSet | Sequence[object] | object]) -- argvalues のリストは、テストが異なる引数値で呼び出される回数を決定します。 1 つの argname のみが指定された場合、argvalues は値のリストです。 N 個の argnames が指定された場合、argvalues は N-タプルのリストでなければなりません。 各タプル要素は、それぞれの argname の値を指定します。
indirect (bool | Sequence[str]) -- 引数名のリスト (argnames の部分集合) またはブール値。 True の場合、リストには argnames のすべての名前が含まれます。 このリスト内の argname に対応する各 argvalue は、それぞれの argname フィクスチャ関数に request.param として渡されるため、テストのセットアップフェーズではなく収集時により高価なセットアップを行うことができます。
ids (Iterable[object | None] | Callable[[Any], object | None] | None) --
argvaluesの id のシーケンス (またはジェネレータ) または各 argvalue の id の一部を返すための呼び出し可能オブジェクト。 シーケンス (およびitertools.count()のようなジェネレータ) の場合、返される id はstring、int、float、bool、またはNoneの型である必要があります。 これらはargvaluesの対応するインデックスにマップされます。Noneは自動生成された id を使用することを意味します。 呼び出し可能オブジェクトの場合、argvaluesの各エントリに対して呼び出され、返された値は、セット全体の自動生成された id の一部として使用されます (部分はダッシュ ("-") で結合されます) 。 これは、特定のアイテムに対してより具体的な id を提供するために便利です。 たとえば、日付。Noneを返すと、自動生成された id が使用されます。 id が提供されていない場合、argvalues から自動的に生成されます。scope (Literal['session', 'package', 'module', 'class', 'function'] | None) -- 指定されている場合、パラメータのスコープを示します。 スコープは、パラメータインスタンスごとにテストをグループ化するために使用されます。 これは、フィクスチャ関数で定義されたスコープを上書きし、テストコンテキストや構成を使用して動的スコープを設定することができます。
パーサー¶
- final class Parser[ソース]¶
コマンドライン引数および ini ファイル値のパーサー。
- 変数:
extra_info -- コマンドライン引数の処理中にエラーが発生した場合に表示する汎用パラメータ -> 値の辞書。
- getgroup(name, description='', after=None)[ソース]¶
名前付きオプショングループを取得(または作成)します。
- パラメータ:
- 戻り値:
オプショングループ。
- 戻り値の型:
返されるグループオブジェクトには、
parser.addoptionと同じシグネチャを持つaddoptionメソッドがありますが、pytest --helpの出力でそれぞれのグループに表示されます。
- addoption(*opts, **attrs)[ソース]¶
コマンドラインオプションを登録します。
- パラメータ:
opts (str) -- オプション名。 短いオプションまたは長いオプションが使用できます。
attrs (Any) -- argparse ライブラリの
add_argument()関数が受け入れるのと同じ属性。
コマンドライン解析後、オプションは
config.option.NAMEを介して pytest 設定オブジェクトで利用可能です。 ここでNAMEは通常、dest属性を渡すことで設定されます。 例えばaddoption("--long", dest="NAME", ...)。
- addini(name, help, type=None, default=<notset>)[ソース]¶
ini ファイルオプションを登録します。
- パラメータ:
name (str) -- ini 変数の名前。
type (Literal['string', 'paths', 'pathlist', 'args', 'linelist', 'bool'] | None) -- 変数のタイプ。 次のいずれかです:*
string:文字列*bool:ブール値*args:シェルのように区切られた文字列のリスト*linelist:改行で区切られた文字列のリスト*paths:シェルのように区切られたpathlib.Pathのリスト*pathlist:シェルのように区切られたpy.pathのリスト``paths`` およびpathlistタイプの場合、ini ファイルに対して相対的に考慮されます。 ini ファイルが定義されていない場合、現在の作業ディレクトリに対して相対的に考慮されます(例えば--override-iniを使用する場合)。 .. versionadded:: 7.0``paths`` 変数タイプ。 .. versionadded:: 8.1ini ファイルがない場合にpathsおよびpathlistを解決するために現在の作業ディレクトリを使用します。Noneまたは渡されない場合、デフォルトはstringです。default (Any) -- ini ファイルオプションが存在しないがクエリされた場合のデフォルト値。
ini 変数の値は
config.getini(name)を呼び出すことで取得できます。
OptionGroup¶
- class OptionGroup[ソース]¶
独自のセクションに表示されるオプショングループ。
- addoption(*opts, **attrs)[ソース]¶
このグループにオプションを追加します。
長いオプションの短縮版が指定されている場合、ヘルプには表示されません。
addoption('--twowords', '--two-words')はヘルプに--two-wordsのみを表示しますが、--twowordsも受け入れられ、自動的な宛先はargs.twowordsになります。- パラメータ:
opts (str) -- オプション名。 短いオプションまたは長いオプションが使用できます。
attrs (Any) -- argparse ライブラリの
add_argument()関数が受け入れるのと同じ属性。
PytestPluginManager¶
- final class PytestPluginManager[ソース]¶
ベースクラス:
PluginManagerpluggy.PluginManagerで、pytest 固有の追加機能があります:コマンドライン、
PYTEST_PLUGINS環境変数、および読み込まれるプラグインに見つかるpytest_pluginsグローバル変数からプラグインを読み込みます。起動時の
conftest.pyの読み込み。
- register(plugin, name=None)[ソース]¶
プラグインを登録し、その名前を返します。
- パラメータ:
name (str | None) -- プラグインを登録する名前。 指定されていない場合、
get_canonical_name()を使用して名前が生成されます。- 戻り値:
プラグイン名。 名前が登録をブロックされている場合、
Noneを返します。- 戻り値の型:
str | None
プラグインが既に登録されている場合、
ValueErrorを発生させます。
- import_plugin(modname, consider_entry_points=False)[ソース]¶
modnameでプラグインをインポートします。consider_entry_pointsが True の場合、エントリーポイント名もプラグインを見つけるために考慮されます。
- add_hookcall_monitoring(before, after)¶
すべてのフックに対して前後のトレース関数を追加します。
呼び出されると、追加されたトレーサーを削除する元に戻す関数を返します。
before(hook_name, hook_impls, kwargs)はすべてのフック呼び出しの前に呼び出され、フックコーラーインスタンス、HookImpl インスタンスのリスト、およびフック呼び出しのキーワード引数を受け取ります。after(outcome, hook_name, hook_impls, kwargs)はbeforeと同じ引数を受け取りますが、フック呼び出し全体の結果を表すResultオブジェクトも受け取ります。
- add_hookspecs(module_or_class)¶
指定された
module_or_classに定義された新しいフック仕様を追加します。関数は、対応する
HookspecMarkerでデコレートされている場合にフック仕様として認識されます。
- check_pending()¶
フック仕様に対して検証されていないすべてのフックがオプションであることを確認します。 そうでない場合は
PluginValidationErrorを発生させます。
- enable_tracing()¶
フック呼び出しのトレースを有効にします。
呼び出されると、追加されたトレースを削除する元に戻す関数を返します。
- get_canonical_name(plugin)¶
プラグインオブジェクトの正規名を返します。
プラグインは
register(plugin, name)の呼び出し元によって指定された別の名前で登録される場合があることに注意してください。 登録されたプラグインの名前を取得するには、代わりにget_name(plugin)を使用してください。
- get_hookcallers(plugin)¶
指定されたプラグインのすべてのフックコーラーを取得します。
- 戻り値:
フックコーラー、または
pluginがこのプラグインマネージャーに登録されていない場合はNone。- 戻り値の型:
list[HookCaller] | None
- get_name(plugin)¶
プラグインが登録されている名前を返します。 登録されていない場合は
None。
- get_plugin(name)¶
指定された名前で登録されているプラグインを返します(存在する場合)。
- get_plugins()¶
登録されているすべてのプラグインオブジェクトのセットを返します。
- has_plugin(name)¶
指定された名前のプラグインが登録されているかどうかを返します。
- is_blocked(name)¶
指定されたプラグイン名がブロックされているかどうかを返します。
- is_registered(plugin)¶
プラグインが既に登録されているかどうかを返します。
- list_name_plugin()¶
すべての登録されたプラグインの (name, plugin) ペアのリストを返します。
- list_plugin_distinfo()¶
すべての setuptools に登録されたプラグインの (plugin, distinfo) ペアのリストを返します。
- load_setuptools_entrypoints(group, name=None)¶
指定された setuptools
groupをクエリしてモジュールをロードします。
- set_blocked(name)¶
指定された名前の登録をブロックし、既に登録されている場合は登録を解除します。
- subset_hook_caller(name, remove_plugins)¶
名前付きメソッドのプロキシ
HookCallerインスタンスを返します。 このインスタンスは、remove_plugins からのものを除くすべての登録されたプラグインへの呼び出しを管理します。
- unblock(name)¶
名前のブロックを解除します。
名前が実際にブロックされていたかどうかを返します。
- unregister(plugin=None, name=None)¶
プラグインとそのすべてのフック実装の登録を解除します。
プラグインはプラグインオブジェクトまたはプラグイン名のいずれかで指定できます。 両方が指定されている場合、それらは一致している必要があります。
登録解除されたプラグインを返します。 見つからない場合は
None。
- project_name: Final¶
プロジェクト名。
- hook: Final¶
フックリレー。 すべての登録されたプラグインでフックを呼び出すために使用されます。 詳細は Calling hooks を参照してください。
- trace: Final[_tracing.TagTracerSub]¶
トレースエントリーポイント。 詳細は Built-in tracing を参照してください。
TestReport¶
- final class TestReport[ソース]¶
ベースクラス:
BaseReport基本的なテストレポートオブジェクト(セットアップおよびティアダウン呼び出しが失敗した場合にも使用されます)。
レポートには任意の追加属性を含めることができます。
- location: tuple[str, int | None, str]¶
テストアイテムの実際の場所を示す (filesystempath, lineno, domaininfo) タプル。 メソッドが異なるモジュールから継承されている場合など、収集された場所と異なる場合があります。 filesystempath は
config.rootdirに対して相対的である場合があります。 行番号は 0 ベースです。
- longrepr: None | ExceptionInfo[BaseException] | tuple[str, int, str] | str | TerminalRepr¶
None または失敗の表現。
- user_properties¶
ユーザープロパティは、テストのユーザー定義プロパティを保持する (name, value) タプルのリストです。
- sections: list[tuple[str, str]]¶
テストレポートの追加情報を含む
(heading, content)の文字列タプル。 pytest はstdout、stderrからキャプチャされたテキストやインターセプトされたログイベントを追加するために使用します。 他のプラグインがレポートに任意の情報を追加するために使用することもできます。
- property count_towards_summary: bool¶
実験的 このレポートがテストセッションの最後に表示される合計("1 passed, 1 failure" など)にカウントされるかどうか。
注釈
この関数は 実験的 と見なされているため、パッチリリースでも変更される可能性があることに注意してください。
TestShortLogReport¶
- class TestShortLogReport[ソース]¶
テストステータス結果カテゴリ、短い文字、および詳細な単語を格納するために使用されます。 例えば
"rerun", "R", ("RERUN", {"yellow": True})。- 変数:
category -- 結果のクラス。 例えば
“passed”、“skipped”、“error”、または空文字列。letter -- テストの進行中に表示される短い文字。 例えば
"."、"s"、"E"、または空文字列。word -- 詳細モードでテストの進行中に表示される詳細な単語。 例えば
"PASSED"、"SKIPPED"、"ERROR"、または空文字列。
Result¶
hook wrappers 内で使用される結果オブジェクト。 詳細は Result in the pluggy documentation を参照してください。
Stash¶
- class Stash[ソース]¶
Stashは型安全な異種可変マッピングであり、キーと値のタイプをStashが作成される場所とは別に定義できます。通常、
Stashを持つオブジェクトが与えられます。 例えばConfigまたはNode:stash: Stash = some_object.stash
モジュールまたはプラグインがこの
Stashにデータを保存したい場合、キーのためにStashKeys を作成します(モジュールレベルで):# At the top-level of the module some_str_key = StashKey[str]() some_bool_key = StashKey[bool]()
情報を保存するには:
# Value type must match the key. stash[some_str_key] = "value" stash[some_bool_key] = True
情報を取得するには:
# The static type of some_str is str. some_str = stash[some_str_key] # The static type of some_bool is bool. some_bool = stash[some_bool_key]
Added in version 7.0.
グローバル変数¶
pytest は、テストモジュールや conftest.py ファイルで定義された一部のグローバル変数を特別に扱います。
- collect_ignore¶
チュートリアル: テスト収集のカスタマイズ
conftest.py ファイル に宣言してテストディレクトリやモジュールを除外できます。 パスのリスト(str、pathlib.Path または任意の os.PathLike)である必要があります。
collect_ignore = ["setup.py"]
- collect_ignore_glob¶
チュートリアル: テスト収集のカスタマイズ
conftest.py ファイル に宣言して Unix シェルスタイルのワイルドカードを使用してテストディレクトリやモジュールを除外できます。 str にグロブパターンを含むことができる list[str] である必要があります。
collect_ignore_glob = ["*_ignore.py"]
- pytest_plugins¶
チュートリアル: テストモジュールまたは conftest ファイルでのプラグインの要求/読み込み
テストモジュール および conftest.py ファイル の グローバル レベルで宣言して追加のプラグインを登録できます。 str または Sequence[str] のいずれかです。
pytest_plugins = "myapp.testsupport.myplugin"
pytest_plugins = ("myapp.testsupport.tools", "myapp.testsupport.regression")
- pytestmark¶
チュートリアル: クラス全体またはモジュールにマークを付ける
テストモジュール の グローバル レベルで宣言して、すべてのテスト関数およびメソッドに 1 つ以上の marks を適用できます。 単一のマークまたはマークのリスト(左から右の順に適用)である場合があります。
import pytest
pytestmark = pytest.mark.webtest
import pytest
pytestmark = [pytest.mark.integration, pytest.mark.slow]
環境変数¶
pytest の動作を変更するために使用できる環境変数。
- CI¶
設定されている場合(値に関係なく)、pytest は CI プロセスで実行されていることを認識します。 BUILD_NUMBER 変数の代替です。 詳細は CI パイプライン を参照してください。
- BUILD_NUMBER¶
設定されている場合(値に関係なく)、pytest は CI プロセスで実行されていることを認識します。 CI 変数の代替です。 詳細は CI パイプライン を参照してください。
- PYTEST_ADDOPTS¶
これには、ユーザーが指定したコマンドラインに 先頭に追加 されるコマンドライン(py:mod:shlex モジュールによって解析されます)が含まれます。 詳細は 組み込み設定ファイルオプション を参照してください。
- PYTEST_VERSION¶
この環境変数は pytest セッションの開始時に定義され、その後は未定義になります。 pytest.__version__ の値を含み、他のこととともに、コードが pytest 実行中に実行されているかどうかを簡単に確認するために使用できます。
- PYTEST_CURRENT_TEST¶
これはユーザーによって設定されることを意図しているのではなく、pytest が内部的に現在のテストの名前で設定します。 他のプロセスがそれを検査できるようにします。 詳細は PYTEST_CURRENT_TEST 環境変数 を参照してください。
- PYTEST_DEBUG¶
設定されている場合、pytest はトレースおよびデバッグ情報を出力します。
- PYTEST_DEBUG_TEMPROOT¶
tmp_path のようなフィクスチャによって生成される一時ディレクトリのルート。 詳細は 一時ディレクトリの場所と保持 を参照してください。
- PYTEST_DISABLE_PLUGIN_AUTOLOAD¶
設定されている場合、entry point packaging metadata を通じたプラグインの自動読み込みを無効にします。 明示的に指定されたプラグインのみが読み込まれます。
- PYTEST_PLUGINS¶
プラグインとして読み込むべきモジュールのカンマ区切りリストを含みます:
export PYTEST_PLUGINS=mymodule.plugin,xdist
- PYTEST_THEME¶
コード出力に使用する pygment style を設定します。
- PYTEST_THEME_MODE¶
PYTEST_THEME を dark または light に設定します。
- PY_COLORS¶
1 に設定すると、pytest はターミナル出力に色を使用します。 0 に設定すると、pytest は色を使用しません。 PY_COLORS は NO_COLOR および FORCE_COLOR より優先されます。
- NO_COLOR¶
空でない文字列に設定されている場合(値に関係なく)、pytest はターミナル出力に色を使用しません。 PY_COLORS は NO_COLOR より優先され、FORCE_COLOR より優先されます。 詳細は no-color.org を参照してください。 このコミュニティ標準をサポートする他のライブラリについても説明しています。
- FORCE_COLOR¶
空でない文字列に設定されている場合(値に関係なく)、pytest はターミナル出力に色を使用します。 PY_COLORS および NO_COLOR は FORCE_COLOR より優先されます。
例外¶
- final exception FixtureLookupError[ソース]¶
ベースクラス:
LookupError要求されたフィクスチャを返すことができませんでした(存在しないか無効です)。
警告¶
不適切な使用や非推奨の機能などの状況で生成されるカスタム警告。
- class PytestWarning¶
ベースクラス:
UserWarningpytest によって発行されるすべての警告の基本クラス。
- class PytestAssertRewriteWarning¶
ベースクラス:
PytestWarningpytest アサートリライトモジュールによって発行される警告。
- class PytestCacheWarning¶
ベースクラス:
PytestWarningさまざまな状況でキャッシュプラグインによって発行される警告。
- class PytestCollectionWarning¶
ベースクラス:
PytestWarningpytest がファイルまたはモジュール内のシンボルを収集できない場合に発行される警告。
- class PytestConfigWarning¶
ベースクラス:
PytestWarning設定の問題に対して発行される警告。
- class PytestDeprecationWarning¶
ベースクラス:
PytestWarning,DeprecationWarning将来のバージョンで削除される機能の警告クラス。
- class PytestExperimentalApiWarning¶
ベースクラス:
PytestWarning,FutureWarningpytest の実験を示すために使用される警告カテゴリ。
API は将来のバージョンで変更されたり、完全に削除されたりする可能性があるため、慎重に使用してください。
- class PytestReturnNotNoneWarning¶
ベースクラス:
PytestWarningテスト関数が None 以外の値を返しているときに発行される警告。
- class PytestRemovedIn9Warning¶
ベースクラス:
PytestDeprecationWarningpytest 9 で削除される機能の警告クラス。
- class PytestUnhandledCoroutineWarning¶
ベースクラス:
PytestReturnNotNoneWarning未処理のコルーチンに対して発行される警告。
テスト関数を収集する際にコルーチンが見つかりましたが、非同期対応プラグインによって処理されませんでした。 コルーチンテスト関数はネイティブにはサポートされていません。
- class PytestUnknownMarkWarning¶
ベースクラス:
PytestWarning未知のマーカーの使用時に発行される警告。
詳細は テスト関数に属性をマークする方法 を参照してください。
- class PytestUnraisableExceptionWarning¶
ベースクラス:
PytestWarning報告された未発生の例外。
未発生の例外は、
__del__実装や、例外を通常の方法で発生させることができない状況で発生する例外です。
- class PytestUnhandledThreadExceptionWarning¶
ベースクラス:
PytestWarningAn unhandled exception occurred in a
Thread.このような例外は通常の方法では伝播しません。
詳細については、ドキュメントの 内部 pytest 警告 セクションを参照してください。
設定オプション¶
ここに、通常リポジトリのルートに配置される pytest.ini (または .pytest.ini)、pyproject.toml、tox.ini、setup.cfg ファイルに記述できる組み込みの設定オプションのリストがあります。
各ファイル形式の詳細については、設定ファイル形式 を参照してください。
警告
非常に単純な使用例を除いて、setup.cfg の使用は推奨されません。 .cfg ファイルは pytest.ini や tox.ini とは異なるパーサーを使用するため、問題の追跡が困難になる可能性があります。 可能であれば、後者のファイルや pyproject.toml を使用して pytest の設定を保持することをお勧めします。
設定オプションは、コマンドラインで -o/--override-ini を使用して上書きすることができ、複数回渡すこともできます。 期待される形式は name=value です。 例えば:
pytest -o console_output_style=classic -o cache_dir=/tmp/mycache
- addopts¶
指定された
OPTSをコマンドライン引数のセットに追加します。 ユーザーが指定したかのように。 例: この ini ファイルの内容がある場合:# content of pytest.ini [pytest] addopts = --maxfail=2 -rf # exit after 2 failures, report fail info
pytest test_hello.pyを発行することは実際には次の意味です:pytest --maxfail=2 -rf test_hello.py
デフォルトではオプションを追加しません。
- cache_dir¶
キャッシュプラグインの内容が保存されるディレクトリを設定します。 デフォルトのディレクトリは rootdir に作成される
.pytest_cacheです。 ディレクトリは相対パスまたは絶対パスで指定できます。 相対パスを設定する場合、ディレクトリは rootdir に対して相対的に作成されます。 さらに、パスには環境変数を含めることができ、展開されます。 キャッシュプラグインの詳細については、失敗したテストを再実行し、テスト実行間で状態を維持する方法 を参照してください。
- consider_namespace_packages¶
Python モジュールを収集する際に pytest が namespace packages を識別しようとするかどうかを制御します。 デフォルトは
Falseです。テストしているパッケージがネームスペースパッケージの一部である場合は
Trueに設定します。サポートされているのは native namespace packages のみであり、legacy namespace packages をサポートする予定はありません。
Added in version 8.1.
- console_output_style¶
テスト実行中のコンソール出力スタイルを設定します:
classic: クラシックな pytest 出力。progress: クラシックな pytest 出力に似ていますが、進行状況インジケーターが追加されています。progress-even-when-capture-no:capture=noの場合でも進行状況インジケーターの使用を許可します。count: 進行状況に似ていますが、パーセントではなく完了したテストの数として進行状況を表示します。
デフォルトは
progressですが、好みに応じて、または新しいモードが予期しない問題を引き起こしている場合はclassicに戻すことができます:# content of pytest.ini [pytest] console_output_style = classic
- doctest_encoding¶
ドックストリングを含むテキストファイルをデコードするために使用するデフォルトのエンコーディング。 See how pytest handles doctests を参照してください。
- doctest_optionflags¶
標準の
doctestモジュールからの 1 つ以上のドックテストフラグ名。 See how pytest handles doctests を参照してください。
- empty_parameter_set_mark¶
パラメータ化で空のパラメータセットに対するアクションを選択できます
skipは空のパラメータセットを持つテストをスキップします (デフォルト)xfailは空のパラメータセットを持つテストを xfail(run=False) としてマークしますfail_at_collectは、パラメータ化が空のパラメータセットを収集した場合に例外を発生させます
# content of pytest.ini [pytest] empty_parameter_set_mark = xfail
注釈
このオプションのデフォルト値は、将来のリリースで
xfailに変更される予定です。 これはエラーが発生しにくいと考えられるためです。 詳細については #3155 を参照してください。
- faulthandler_timeout¶
テストの実行に
X秒以上かかる場合 (フィクスチャのセットアップとティアダウンを含む)、すべてのスレッドのトレースバックをダンプします。faulthandler.dump_traceback_later()関数を使用して実装されているため、そこにあるすべての注意事項が適用されます。# content of pytest.ini [pytest] faulthandler_timeout=5
詳細については フォールトハンドラー を参照してください。
- filterwarnings¶
一致する警告に対して実行されるフィルターとアクションのリストを設定します。 デフォルトでは、テストセッション中に発生したすべての警告がテストセッションの最後に要約として表示されます。
# content of pytest.ini [pytest] filterwarnings = error ignore::DeprecationWarning
これは pytest に非推奨警告を無視し、他のすべての警告をエラーに変えるように指示します。 詳細については 警告をキャプチャする方法 を参照してください。
- junit_duration_report¶
Added in version 4.1.
JUnit XML レポートに期間が記録される方法を設定します:
total(デフォルト): 報告される期間にはセットアップ、呼び出し、およびティアダウンの時間が含まれます。call: 報告される期間にはセットアップとティアダウンを除く呼び出し時間のみが含まれます。
[pytest] junit_duration_report = call
- junit_family¶
Added in version 4.2.
バージョン 6.1 で変更: デフォルトが
xunit2に変更されました。生成された JUnit XML ファイルの形式を設定します。 可能なオプションは次のとおりです:
xunit1(またはlegacy): xunit 1.0 形式と互換性のある古いスタイルの出力を生成します。xunit2: xunit 2.0 スタイルの出力 を生成します。 これは最新の Jenkins バージョンとより互換性があるはずです。 これがデフォルトです。
[pytest] junit_family = xunit2
- junit_logging¶
Added in version 3.5.
バージョン 5.4 で変更:
log、all、out-errオプションが追加されました。キャプチャされた出力を JUnit XML ファイルに書き込むかどうかを設定します。 有効な値は次のとおりです:
log:loggingキャプチャされた出力のみを書き込みます。system-out: キャプチャされたstdoutの内容を書き込みます。system-err: キャプチャされたstderrの内容を書き込みます。out-err: キャプチャされたstdoutとstderrの両方の内容を書き込みます。all: キャプチャされたlogging、stdout、stderrの内容を書き込みます。no(デフォルト): キャプチャされた出力は書き込まれません。
[pytest] junit_logging = system-out
- junit_log_passing_tests¶
Added in version 4.6.
junit_logging != "no"の場合、成功した テストのキャプチャされた出力を JUnit XML ファイルに書き込むかどうかを設定します。 デフォルトはTrueです。[pytest] junit_log_passing_tests = False
- junit_suite_name¶
ルートテストスイート xml アイテムの名前を設定するには、設定ファイルで
junit_suite_nameオプションを設定できます:[pytest] junit_suite_name = my_suite
- log_auto_indent¶
複数行のログメッセージの選択的な自動インデントを許可します。
すべてのログの自動インデント動作を設定するためのコマンドラインオプション
--log-auto-indent [value]および設定オプションlog_auto_indent = [value]をサポートします。[value]は次の値にすることができます:True または "On" - 複数行のログメッセージを動的に自動インデントします。
False または "Off" または 0 - 複数行のログメッセージを自動インデントしない (デフォルトの動作)
[正の整数] - 複数行のログメッセージを [value] スペースで自動インデント
[pytest] log_auto_indent = False
ログに特定のエントリの自動インデント動作を指定するために
logging.log()への呼び出しに kwargextra={"auto_indent": [value]}を渡すことをサポートします。extrakwarg はコマンドラインまたは設定で指定された値を上書きします。
- log_cli¶
テスト実行中にログ表示を有効にします ("live logging" とも呼ばれます)。 デフォルトは
Falseです。[pytest] log_cli = True
- log_cli_date_format¶
ライブロギングの日付をフォーマットする際に使用される
time.strftime()互換の文字列を設定します。[pytest] log_cli_date_format = %Y-%m-%d %H:%M:%S
詳細については、ライブログ を参照してください。
- log_cli_format¶
ライブロギングメッセージをフォーマットするために使用される
logging互換の文字列を設定します。[pytest] log_cli_format = %(asctime)s %(levelname)s %(message)s
詳細については、ライブログ を参照してください。
- log_cli_level¶
ライブロギングのためにキャプチャされる最小のログメッセージレベルを設定します。 整数値またはレベルの名前を使用できます。
[pytest] log_cli_level = INFO
詳細については、ライブログ を参照してください。
- log_date_format¶
ログキャプチャの日付をフォーマットする際に使用される
time.strftime()互換の文字列を設定します。[pytest] log_date_format = %Y-%m-%d %H:%M:%S
詳細については、ロギングを管理する方法 を参照してください。
- log_file¶
現在の作業ディレクトリに対して相対的なファイル名を設定し、ログメッセージを他のアクティブなロギング機能に加えてそのファイルに書き込みます。
[pytest] log_file = logs/pytest-logs.txt
詳細については、ロギングを管理する方法 を参照してください。
- log_file_date_format¶
ログファイルの日付をフォーマットする際に使用される
time.strftime()互換の文字列を設定します。[pytest] log_file_date_format = %Y-%m-%d %H:%M:%S
詳細については、ロギングを管理する方法 を参照してください。
- log_file_format¶
ログファイルにリダイレクトされたログメッセージをフォーマットするために使用される
logging互換の文字列を設定します。[pytest] log_file_format = %(asctime)s %(levelname)s %(message)s
詳細については、ロギングを管理する方法 を参照してください。
- log_file_level¶
ログファイルにキャプチャされる最小のログメッセージレベルを設定します。 整数値またはレベルの名前を使用できます。
[pytest] log_file_level = INFO
詳細については、ロギングを管理する方法 を参照してください。
- log_format¶
キャプチャされたログメッセージをフォーマットするために使用される
logging互換の文字列を設定します。[pytest] log_format = %(asctime)s %(levelname)s %(message)s
詳細については、ロギングを管理する方法 を参照してください。
- log_level¶
ログキャプチャにキャプチャされる最小のログメッセージレベルを設定します。 整数値またはレベルの名前を使用できます。
[pytest] log_level = INFO
詳細については、ロギングを管理する方法 を参照してください。
- markers¶
--strict-markersまたは--strictコマンドライン引数が使用されている場合、コア pytest またはプラグインによってコードで定義された既知のマーカーのみが許可されます。この設定で追加のマーカーをリストすることで、それらをホワイトリストに追加できます。 この場合、将来のリグレッションを避けるために
--strict-markersをaddoptsに追加することをお勧めします:[pytest] addopts = --strict-markers markers = slow serial
注釈
--strict-markersの使用が強く推奨されます。--strictは後方互換性のために保持されており、他のオプションには適用されず、マーカーにのみ適用されるため、他の人にとって混乱を招く可能性があります。
- minversion¶
テストを実行するために必要な最小の pytest バージョンを指定します。
# content of pytest.ini [pytest] minversion = 3.0 # will fail if we run with pytest-2.8
- norecursedirs¶
テスト検出のために再帰する際に避けるべきディレクトリのベース名パターンを設定します。 個々の (fnmatch スタイル) パターンは、再帰するかどうかを決定するためにディレクトリのベース名に適用されます。 パターンマッチング文字:
* matches everything ? matches any single character [seq] matches any character in seq [!seq] matches any char not in seq
デフォルトのパターンは
'*.egg','.*','_darcs','build','CVS','dist','node_modules','venv','{arch}'です。norecursedirsを設定するとデフォルトが置き換えられます。 ここに特定のディレクトリを避ける方法の例を示します:[pytest] norecursedirs = .svn _build tmp*
これは
pytestに典型的なサブバージョンまたは sphinx-build ディレクトリやtmpプレフィックスのディレクトリを見ないように指示します。さらに、
pytestは仮想環境のルートと見なされるディレクトリを自動的に識別して無視しようとします。 仮想環境のルートと見なされるディレクトリは、--collect-in-virtualenvが指定されない限り、テスト収集中に考慮されません。 また、norecursedirsは--collect-in-virtualenvよりも優先されます。 例えば、ベースディレクトリが'.*'に一致する仮想環境でテストを実行する場合、--collect-in-virtualenvフラグを使用するだけでなく、norecursedirsを上書きする必要があります。
- python_classes¶
テスト収集のために考慮されるクラスを決定するための 1 つ以上の名前プレフィックスまたはグロブスタイルのパターン。 パターン間にスペースを追加することで複数のグロブパターンを検索します。 デフォルトでは、pytest は
Testで始まるクラスをテスト収集として考慮します。 ここにSuiteで終わるクラスからテストを収集する方法の例を示します:[pytest] python_classes = *Suite
unittest.TestCaseから派生したクラスは、このオプションに関係なく常に収集されます。 これはunittestの独自の収集フレームワークを使用してこれらのテストを収集するためです。
- python_files¶
テストモジュールとして考慮される Python ファイルを決定するための 1 つ以上のグロブスタイルのファイルパターン。 パターン間にスペースを追加することで複数のグロブパターンを検索します:
[pytest] python_files = test_*.py check_*.py example_*.py
または 1 行ごと:
[pytest] python_files = test_*.py check_*.py example_*.py
デフォルトでは、
test_*.pyおよび*_test.pyに一致するファイルがテストモジュールとして考慮されます。
- python_functions¶
テスト関数およびメソッドとして考慮されるテスト関数およびメソッドを決定するための 1 つ以上の名前プレフィックスまたはグロブパターン。 パターン間にスペースを追加することで複数のグロブパターンを検索します。 デフォルトでは、pytest は
testで始まる関数をテストとして考慮します。 ここに_testで終わるテスト関数およびメソッドを収集する方法の例を示します:[pytest] python_functions = *_test
これは
unittest.TestCaseから派生したクラスのメソッドには影響しません。 これはunittestの独自の収集フレームワークを使用してこれらのテストを収集するためです。詳細な例については、命名規則の変更 を参照してください。
- pythonpath¶
Python の検索パスに追加するディレクトリのリストを設定します。 ディレクトリは
sys.pathの先頭に追加されます。PYTHONPATH環境変数と同様に、ディレクトリは Python がインポートされたモジュールを探す場所に含まれます。 パスは rootdir ディレクトリに対して相対的です。 ディレクトリはテストセッションの期間中パスに残ります。[pytest] pythonpath = src1 src2
注釈
pythonpathは、特に-pコマンドラインオプションを使用してロードされるプラグインなど、非常に早い段階で発生する一部のインポートには影響しません。
- required_plugins¶
pytest を実行するために存在しなければならないプラグインのスペース区切りリスト。 プラグインはバージョン指定子を名前の直後に付けてリストすることができます。 異なるバージョン指定子間に空白は許可されません。 プラグインのいずれかが見つからない場合、エラーを発生させます。
[pytest] required_plugins = pytest-django>=3.0.0,<4.0.0 pytest-html pytest-xdist>=1.0.0
- testpaths¶
pytest を rootdir ディレクトリから実行する際に、コマンドラインで特定のディレクトリ、ファイル、またはテスト ID が指定されていない場合にテストを検索するディレクトリのリストを設定します。 ファイルシステムパスはシェルスタイルのワイルドカードを使用できます。 再帰的な
**パターンを含みます。プロジェクトのすべてのテストが既知の場所にある場合、テスト収集を高速化し、誤って不要なテストを拾うのを避けるために便利です。
[pytest] testpaths = testing doc
この構成は、次のコマンドを実行することを意味します:
pytest次のコマンドを実行するのと同じ実際の効果があります:
pytest testing doc
- tmp_path_retention_count¶
tmp_path_retention_policyに従ってtmp_pathディレクトリをいくつのセッション保持するか。[pytest] tmp_path_retention_count = 3
デフォルト:
3
- tmp_path_retention_policy¶
tmp_pathフィクスチャによって作成されたディレクトリをテスト結果に基づいて保持するかどうかを制御します。all: テスト結果に関係なく、すべてのテストのディレクトリを保持します。failed: 結果がerrorまたはfailedのテストのみディレクトリを保持します。none: 結果に関係なく、各テスト終了後にディレクトリは常に削除されます。
[pytest] tmp_path_retention_policy = all
デフォルト:
all
- usefixtures¶
すべてのテスト関数に適用されるフィクスチャのリスト。 これは、すべてのテスト関数に
@pytest.mark.usefixturesマーカーを適用するのと同じ意味です。[pytest] usefixtures = clean_db
- verbosity_assertions¶
アサーション関連の出力に対して特定の詳細レベルを設定し、アプリケーション全体のレベルを上書きします。
[pytest] verbosity_assertions = 2
デフォルトはアプリケーション全体の詳細レベル (
-vコマンドラインオプションを介して) です。 特別な値autoを使用して、グローバルな詳細レベルを明示的に使用することができます。
- verbosity_test_cases¶
テストケース実行関連の出力に対して特定の詳細レベルを設定し、アプリケーション全体のレベルを上書きします。
[pytest] verbosity_test_cases = 2
デフォルトはアプリケーション全体の詳細レベル (
-vコマンドラインオプションを介して) です。 特別な値autoを使用して、グローバルな詳細レベルを明示的に使用することができます。
- xfail_strict¶
Trueに設定すると、実際に成功した@pytest.mark.xfailでマークされたテストはデフォルトでテストスイートに失敗します。 詳細については、strict パラメータ を参照してください。[pytest] xfail_strict = True
コマンドラインフラグ¶
すべてのコマンドラインフラグは pytest --help を実行することで取得できます:
$ pytest --help
usage: pytest [options] [file_or_dir] [file_or_dir] [...]
positional arguments:
file_or_dir
general:
-k EXPRESSION Only run tests which match the given substring
expression. An expression is a Python evaluable
expression where all names are substring-matched
against test names and their parent classes.
Example: -k 'test_method or test_other' matches all
test functions and classes whose name contains
'test_method' or 'test_other', while -k 'not
test_method' matches those that don't contain
'test_method' in their names. -k 'not test_method
and not test_other' will eliminate the matches.
Additionally keywords are matched to classes and
functions containing extra names in their
'extra_keyword_matches' set, as well as functions
which have names assigned directly to them. The
matching is case-insensitive.
-m MARKEXPR Only run tests matching given mark expression. For
example: -m 'mark1 and not mark2'.
--markers show markers (builtin, plugin and per-project ones).
-x, --exitfirst Exit instantly on first error or failed test
--fixtures, --funcargs
Show available fixtures, sorted by plugin appearance
(fixtures with leading '_' are only shown with '-v')
--fixtures-per-test Show fixtures per test
--pdb Start the interactive Python debugger on errors or
KeyboardInterrupt
--pdbcls=modulename:classname
Specify a custom interactive Python debugger for use
with --pdb.For example:
--pdbcls=IPython.terminal.debugger:TerminalPdb
--trace Immediately break when running each test
--capture=method Per-test capturing method: one of fd|sys|no|tee-sys
-s Shortcut for --capture=no
--runxfail Report the results of xfail tests as if they were
not marked
--lf, --last-failed Rerun only the tests that failed at the last run (or
all if none failed)
--ff, --failed-first Run all tests, but run the last failures first. This
may re-order tests and thus lead to repeated fixture
setup/teardown.
--nf, --new-first Run tests from new files first, then the rest of the
tests sorted by file mtime
--cache-show=[CACHESHOW]
Show cache contents, don't perform collection or
tests. Optional argument: glob (default: '*').
--cache-clear Remove all cache contents at start of test run
--lfnf={all,none}, --last-failed-no-failures={all,none}
With ``--lf``, determines whether to execute tests
when there are no previously (known) failures or
when no cached ``lastfailed`` data was found.
``all`` (the default) runs the full test suite
again. ``none`` just emits a message about no known
failures and exits successfully.
--sw, --stepwise Exit on test failure and continue from last failing
test next time
--sw-skip, --stepwise-skip
Ignore the first failing test but stop on the next
failing test. Implicitly enables --stepwise.
Reporting:
--durations=N Show N slowest setup/test durations (N=0 for all)
--durations-min=N Minimal duration in seconds for inclusion in slowest
list. Default: 0.005.
-v, --verbose Increase verbosity
--no-header Disable header
--no-summary Disable summary
--no-fold-skipped Do not fold skipped tests in short summary.
-q, --quiet Decrease verbosity
--verbosity=VERBOSE Set verbosity. Default: 0.
-r chars Show extra test summary info as specified by chars:
(f)ailed, (E)rror, (s)kipped, (x)failed, (X)passed,
(p)assed, (P)assed with output, (a)ll except passed
(p/P), or (A)ll. (w)arnings are enabled by default
(see --disable-warnings), 'N' can be used to reset
the list. (default: 'fE').
--disable-warnings, --disable-pytest-warnings
Disable warnings summary
-l, --showlocals Show locals in tracebacks (disabled by default)
--no-showlocals Hide locals in tracebacks (negate --showlocals
passed through addopts)
--tb=style Traceback print mode
(auto/long/short/line/native/no)
--xfail-tb Show tracebacks for xfail (as long as --tb != no)
--show-capture={no,stdout,stderr,log,all}
Controls how captured stdout/stderr/log is shown on
failed tests. Default: all.
--full-trace Don't cut any tracebacks (default is to cut)
--color=color Color terminal output (yes/no/auto)
--code-highlight={yes,no}
Whether code should be highlighted (only if --color
is also enabled). Default: yes.
--pastebin=mode Send failed|all info to bpaste.net pastebin service
--junit-xml=path Create junit-xml style report file at given path
--junit-prefix=str Prepend prefix to classnames in junit-xml output
pytest-warnings:
-W PYTHONWARNINGS, --pythonwarnings=PYTHONWARNINGS
Set which warnings to report, see -W option of
Python itself
--maxfail=num Exit after first num failures or errors
--strict-config Any warnings encountered while parsing the `pytest`
section of the configuration file raise errors
--strict-markers Markers not registered in the `markers` section of
the configuration file raise errors
--strict (Deprecated) alias to --strict-markers
-c FILE, --config-file=FILE
Load configuration from `FILE` instead of trying to
locate one of the implicit configuration files.
--continue-on-collection-errors
Force test execution even if collection errors occur
--rootdir=ROOTDIR Define root directory for tests. Can be relative
path: 'root_dir', './root_dir',
'root_dir/another_dir/'; absolute path:
'/home/user/root_dir'; path with variables:
'$HOME/root_dir'.
collection:
--collect-only, --co Only collect tests, don't execute them
--pyargs Try to interpret all arguments as Python packages
--ignore=path Ignore path during collection (multi-allowed)
--ignore-glob=path Ignore path pattern during collection (multi-
allowed)
--deselect=nodeid_prefix
Deselect item (via node id prefix) during collection
(multi-allowed)
--confcutdir=dir Only load conftest.py's relative to specified dir
--noconftest Don't load any conftest.py files
--keep-duplicates Keep duplicate tests
--collect-in-virtualenv
Don't ignore tests in a local virtualenv directory
--import-mode={prepend,append,importlib}
Prepend/append to sys.path when importing test
modules and conftest files. Default: prepend.
--doctest-modules Run doctests in all .py modules
--doctest-report={none,cdiff,ndiff,udiff,only_first_failure}
Choose another output format for diffs on doctest
failure
--doctest-glob=pat Doctests file matching pattern, default: test*.txt
--doctest-ignore-import-errors
Ignore doctest collection errors
--doctest-continue-on-failure
For a given doctest, continue to run after the first
failure
test session debugging and configuration:
--basetemp=dir Base temporary directory for this test run.
(Warning: this directory is removed if it exists.)
-V, --version Display pytest version and information about
plugins. When given twice, also display information
about plugins.
-h, --help Show help message and configuration info
-p name Early-load given plugin module name or entry point
(multi-allowed). To avoid loading of plugins, use
the `no:` prefix, e.g. `no:doctest`.
--trace-config Trace considerations of conftest.py files
--debug=[DEBUG_FILE_NAME]
Store internal tracing debug information in this log
file. This file is opened with 'w' and truncated as
a result, care advised. Default: pytestdebug.log.
-o OVERRIDE_INI, --override-ini=OVERRIDE_INI
Override ini option with "option=value" style, e.g.
`-o xfail_strict=True -o cache_dir=cache`.
--assert=MODE Control assertion debugging tools.
'plain' performs no assertion debugging.
'rewrite' (the default) rewrites assert statements
in test modules on import to provide assert
expression information.
--setup-only Only setup fixtures, do not execute tests
--setup-show Show setup of fixtures while executing tests
--setup-plan Show what fixtures and tests would be executed but
don't execute anything
logging:
--log-level=LEVEL Level of messages to catch/display. Not set by
default, so it depends on the root/parent log
handler's effective level, where it is "WARNING" by
default.
--log-format=LOG_FORMAT
Log format used by the logging module
--log-date-format=LOG_DATE_FORMAT
Log date format used by the logging module
--log-cli-level=LOG_CLI_LEVEL
CLI logging level
--log-cli-format=LOG_CLI_FORMAT
Log format used by the logging module
--log-cli-date-format=LOG_CLI_DATE_FORMAT
Log date format used by the logging module
--log-file=LOG_FILE Path to a file when logging will be written to
--log-file-mode={w,a}
Log file open mode
--log-file-level=LOG_FILE_LEVEL
Log file logging level
--log-file-format=LOG_FILE_FORMAT
Log format used by the logging module
--log-file-date-format=LOG_FILE_DATE_FORMAT
Log date format used by the logging module
--log-auto-indent=LOG_AUTO_INDENT
Auto-indent multiline messages passed to the logging
module. Accepts true|on, false|off or an integer.
--log-disable=LOGGER_DISABLE
Disable a logger by name. Can be passed multiple
times.
[pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg|pyproject.toml file found:
markers (linelist): Register new markers for test functions
empty_parameter_set_mark (string):
Default marker for empty parametersets
norecursedirs (args): Directory patterns to avoid for recursion
testpaths (args): Directories to search for tests when no files or
directories are given on the command line
filterwarnings (linelist):
Each line specifies a pattern for
warnings.filterwarnings. Processed after
-W/--pythonwarnings.
consider_namespace_packages (bool):
Consider namespace packages when resolving module
names during import
usefixtures (args): List of default fixtures to be used with this
project
python_files (args): Glob-style file patterns for Python test module
discovery
python_classes (args):
Prefixes or glob names for Python test class
discovery
python_functions (args):
Prefixes or glob names for Python test function and
method discovery
disable_test_id_escaping_and_forfeit_all_rights_to_community_support (bool):
Disable string escape non-ASCII characters, might
cause unwanted side effects(use at your own risk)
console_output_style (string):
Console output: "classic", or with additional
progress information ("progress" (percentage) |
"count" | "progress-even-when-capture-no" (forces
progress even when capture=no)
verbosity_test_cases (string):
Specify a verbosity level for test case execution,
overriding the main level. Higher levels will
provide more detailed information about each test
case executed.
xfail_strict (bool): Default for the strict parameter of xfail markers
when not given explicitly (default: False)
tmp_path_retention_count (string):
How many sessions should we keep the `tmp_path`
directories, according to
`tmp_path_retention_policy`.
tmp_path_retention_policy (string):
Controls which directories created by the `tmp_path`
fixture are kept around, based on test outcome.
(all/failed/none)
enable_assertion_pass_hook (bool):
Enables the pytest_assertion_pass hook. Make sure to
delete any previously generated pyc cache files.
verbosity_assertions (string):
Specify a verbosity level for assertions, overriding
the main level. Higher levels will provide more
detailed explanation when an assertion fails.
junit_suite_name (string):
Test suite name for JUnit report
junit_logging (string):
Write captured log messages to JUnit report: one of
no|log|system-out|system-err|out-err|all
junit_log_passing_tests (bool):
Capture log information for passing tests to JUnit
report:
junit_duration_report (string):
Duration time to report: one of total|call
junit_family (string):
Emit XML for schema: one of legacy|xunit1|xunit2
doctest_optionflags (args):
Option flags for doctests
doctest_encoding (string):
Encoding used for doctest files
cache_dir (string): Cache directory path
log_level (string): Default value for --log-level
log_format (string): Default value for --log-format
log_date_format (string):
Default value for --log-date-format
log_cli (bool): Enable log display during test run (also known as
"live logging")
log_cli_level (string):
Default value for --log-cli-level
log_cli_format (string):
Default value for --log-cli-format
log_cli_date_format (string):
Default value for --log-cli-date-format
log_file (string): Default value for --log-file
log_file_mode (string):
Default value for --log-file-mode
log_file_level (string):
Default value for --log-file-level
log_file_format (string):
Default value for --log-file-format
log_file_date_format (string):
Default value for --log-file-date-format
log_auto_indent (string):
Default value for --log-auto-indent
pythonpath (paths): Add paths to sys.path
faulthandler_timeout (string):
Dump the traceback of all threads if a test takes
more than TIMEOUT seconds to finish
addopts (args): Extra command line options
minversion (string): Minimally required pytest version
required_plugins (args):
Plugins that must be present for pytest to run
Environment variables:
CI When set (regardless of value), pytest knows it is running in a CI process and does not truncate summary info
BUILD_NUMBER Equivalent to CI
PYTEST_ADDOPTS Extra command line options
PYTEST_PLUGINS Comma-separated plugins to load during startup
PYTEST_DISABLE_PLUGIN_AUTOLOAD Set to disable plugin auto-loading
PYTEST_DEBUG Set to enable debug tracing of pytest's internals
to see available markers type: pytest --markers
to see available fixtures type: pytest --fixtures
(shown according to specified file_or_dir or current dir if not specified; fixtures with leading '_' are only shown with the '-v' option