あとで書くこと

  • テストの一部を実行する方法
  • フィクスチャ
  • パラメータ
  • マーカー

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
Get Started - pytest documentation favicon https://docs.pytest.org/en/stable/getting-started.html

テスト駆動Python

テスト駆動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
テスト駆動Python 第2版 | 翔泳社 favicon https://www.shoeisha.co.jp/book/detail/9784798177458
テスト駆動Python 第2版 | 翔泳社