Skip to content

pytest の実行#

install#

pip install pytest

Usecase#

pytest ファイル名.py で実行

memo#

  • pytestを実行する際には、ファイルやディレクトリを指定できる。
  • ファイルやディレクトリを指定しない場合、pytestは現在の作業ディレクトリとそのサブディレクトリでテストを検索。
  • pytestが検索するのは、名前がtest_で始まるファイルか、_testで終わるファイル。
  • pytestの実行のうち、実行するテストを検索する部分をテストディスカバリ(testdiscovery)と呼ぶ。
  • テストを1つだけ実行するには::[テスト名]と指定して実行。

pytestに新しいテストを実行させるには、

  • 実行したいテストのファイル名をすべて指定して実行
  • ディレクトリを指定して実行
  • テストが含まれているディレクトリからpytestを呼び出す。

  • フック関数は、pytestの実行プロセスの一部にコードを挿入することで、pytestの動作方法を変更する手段です。

  • フィクスチャは、テスト関数の前後に実行されるセットアップ関数とティアダウン関数であり、テストに使用されるリソースやデータを表すために使用できます

命名規則#

pytestがテストコードを検出できるようにするための命名規則は以下のとおり。

  • テストファイルの名前はtest_[something].pyまたは[something]_test.pyという形式でなければならない。
  • テストメソッドやテスト関数の名前はtest_[something]という形式でなければならない。
  • テストクラスの名前はTest[Something]という形式でなければならない。

実行オプション#

オプションはpytest --help またはpytest -hで確認できます。 主要なオプションは以下の通りです。

オプション 説明
`--collect-only 指定したオプションと構成に基づいて実行されるテストを表示。最初に実行しリファレンスとして活用すると便利
-k 実行するテスト関数を、式を使って検索できるようにする。テストを個別に実行するためのショートカットとしても利用できるため便利
-m テスト関数の一部にマークを付けそれらの関数をまとめて実行できるようにする
-x テストが1つ失敗したところでテストセッションを中止させる
--maxfail=num (-x オプションと併用で)テストが失敗する数に上限を設けたい場合は、--maxfailオプションを使用。
-s print文の出力(または本来ならば標準出力に書き出されるすべての出力)を実際に標準出力(stdout)に書き出す。
-l 失敗しているテストのローカル変数とそれらの値がトレースバックで表示
--lf 最後に失敗したテストだけを再び実行する
--ff 最後に失敗したテストを実行した後、残りの成功しているテストを実行する
-v 詳細な情報を出力。テストの結果が1行に1つずつ表示されること、単なるドットの代わりにテストの名前と結果が文字で表示され便利
-q 省略表示。--tb=lineと組み合わせることで失敗しているテスト行だけが表示される
--tb=[style] 失敗しているテストのトレースバック(traceback)が出力される方法を変更
--durations=N テスト全体を高速化。テストの実行方法を変更するのではなく、テストが実行された後に、最も時間がかかったN個のテスト/セットアップ/ティアダウンを表示。--durations=0を指定した場合は、最も時間がかかったものから順にすべてのテストが表示。
--version pytestのバージョンと、pytestがインストールされているディレクトリを表示。
-h ヘルプの表示

--tb=[style]

style の指定で便利なものにshort/ line / no がある

  • short: assertの行とエラーと評価された行(E)だけが表示され、コンテキストは非表示
  • line: エラーが1行にまとめられる
  • no: トレースバックの非表示