あとで書くこと
- テストの一部を実行する方法
- フィクスチャ
- パラメータ
- マーカー
install
pip install -U pytest命名規則
- テストファイルの名前は
test_<something>.pyあるいはsomething_test.pyという形式にする。 - テストメソッドやテスト関数の名前は
test_<something>という形式にする。 - テストクラスの名前は
Test<Something>という形式にする。
テスト実行
assert 式を用いてテストを行う。
def func(x):
return x + 1
def test_answer():
assert func(3) == 5複数のテストをクラスで包める。
class TestClass:
def test_one(self):
x = "this"
assert "h" in x
def test_two(self):
x = "hello"
assert hasattr(x, "check")例外をキャッチするには pytest.raises() を用いる。
# https://docs.pytest.org/en/stable/how-to/assert.html#assertions-about-expected-exceptions
import pytest
def test_zero_division():
with pytest.raises(ZeroDivisionError):
1 / 0
def test_recursion_depth():
with pytest.raises(RuntimeError) as excinfo:
def f():
f()
f()
assert "maximum recursion" in str(excinfo.value)
テスト結果
- PASSED: 正常終了
- FAILED: 異常終了
- SKIPPED: テストがスキップされる。
- XFAIL: 失敗するはずのテストが想定通り失敗する。
- XPASS: XFAIL を想定していたはずが成功してしまったことを意味する。
- ERROR: 例外がテスト関数の中ではなく、フィクスチャやフック関数の実行中に発生したもの。
References
pytest の公式ドキュメント
Get Started - pytest documentation
テスト駆動Python 第2版 | 翔泳社
pytestを正しく理解し、風通しの良いPythonプログラムを書く
本書は、
Brian Okken, "Python Testing with pytest, Second Edition: Simple, Rapid, Effective, and Scalable",
The Pragmatic Bookshelf
の翻訳書です。
【本書の内容】
Pythonを使った開発時に、テストの検出・実行・結果報告を自動で行うpytestの、導入から活用方法の詳細を、実務に沿うスタイルでを解説した『テスト駆動Python』(2018年)の第2版です。
扱う範囲は前版よりも広くなり、軽く触れるに留めていた箇所もより深い解説を加えており、Pythonを使った開発に欠かせない内容に仕上がっています。とくにCIやプラグイン開発など、テスト自動化エンジニア向けのトピックも増えつつ、パラメータ化やモック、デバッグ手法など、プログラマなら知っておくべき知識もてんこ盛りです。
アプリケーションをPythonで構築する際に、テスト駆動開発をストレスなく行いたいプログラマ・エンジニア、およびテスト設計やテストアーキテクチャを知りたい方にはうってつけの1冊です。
【著者について】
・20年にわたるR&D経験を持つ主席ソフトウェアエンジニア。試験計測機器を開発している。また、Test&Codeポッドキャストを主催し、Python Bytesポッドキャストの共同開催者でもある。
目次
Part 1 pytestの主力機能
第01章 はじめてのpytest
第02章 テスト関数を書く
第03章 pytestのフィクスチャ
第04章 組み込みフィクスチャ
第05章 パラメータ化
第06章 マーカー
Part 2 プロジェクトに取り組む
第07章 戦略
第08章 設定ファイル
第09章 カバレッジ
第10章 モック
第11章 toxと継続的インテグレーション
第12章 スクリプトとアプリケーションのテスト
第13章 テストの失敗をデバッグする
Part 3 ブースターロケット
第14章 サードパーティプラグイン
第15章 プラグインの作成
第16章 高度なパラメータ化
付録A 仮想環境
付録B pip