「テスト駆動 Python 第2版」を読んだ📕
仕事で pytest を使ってて,もっと自信を持って書けるようになりたいな〜と思っていたら本書を見つけてさっそく読んでみた.pytest の機能・記法・設定・Tips などの理解が深まって本当に読んで良かった❗️フィクスチャ・パラメータ化・モック・プラグイン活用など,今まで何となく書いてたところを自信を持って書けるようになって,仕事で pytest を書くのが楽しくなった🦄
もちろん pytest の公式ドキュメントを読むべきだし,本書の内容の多くは公式ドキュメントにも載っているとは思うけど,本書の翻訳はとても読みやすく,pytest の全体像をサッと把握できて,また Cards というサンプルアプリケーションを題材に実際に pytest を試しながら読み進められるから本書を読む価値はあると思う.個人的には本当に読んで良かったな〜と感じてる👍
目次
目次をザッと見て,気になる Chapter があったら読んでみると良いかと👌
- Part.1: pytest の主力機能
- Chapter.1: はじめての pytest
- Chapter.2: テスト関数を書く
- Chapter.3: pytest のフィクスチャ
- Chapter.4: 組み込みフィクスチャ
- Chapter.5: パラメータ化
- Chapter.6: マーカー
- Part.2: プロジェクトに取り組む
- Chapter.7: 戦略
- Chapter.8: 設定ファイル
- Chapter.9: カバレッジ
- Chapter.10: モック
- Chapter.11: tox と継続的インテグレーション
- Chapter.12: スクリプトとアプリケーションのテスト
- Chapter.13: テストの失敗をデバッグする
- Part.3: ブースターロケット
- Chapter.14: サードパーティプラグイン
- Chapter.15: プラグインの作成
- Chapter.16: 高度なパラメータ化
本書で使う Cards アプリケーションのコードは原著サイトから ZIP でダウンロードできる.
Chapter.4
pytest で一時的なディレクトリを作れる組み込みフィクスチャ tmp_path(function スコープ)と tmp_path_factory(session スコープ)はさっそく使えそうだった.
他にも Chapter.4 で紹介されてた組み込みフィクスチャは便利で capsys は別途試して簡単にまとめた.
Chapter.8
pytest.ini に testpaths を設定するのは明確にはなるけど冗長だよなぁ〜と思っていたら「testpaths を指定しておくと pytest 開始時の時間を少し節約できる」と書いてあって発見だった👀ある程度プロジェクトの規模が大きくないと差は出なさそうではあるけど知れて良かった情報の一つだった👍
[pytest] testpaths = tests
Chapter.12
スクリプトとテストコードを src ディレクトリと tests ディレクトリに分割したら import できずにハマるというのはよくあると思う💨僕自身も最初ハマって先輩に相談して教えてもらった経緯もあったりする.本書の第2版では Chapter.12 に Python の検索パスの解説が追加されていて良かった❗️本書を読んで pytest の import にハマる人が減ると良いなぁ〜 \( 'ω')/
.
├── pytest.ini
├── src
│ └── hello.py
└── tests
└── test_hello.py
本書では pytest.ini に pythonpath を設定する例が紹介されていた.
[pytest] pythonpath = src
もちろん pytest.ini ではなく pyproject.toml に設定することもできる👌
[tool.pytest.ini_options] pythonpath = "src"
Chapter.14
pytest プラグインは今までほとんど活用できてなかった💨 pytest サイトの Plugin List を見ながら気になったプラグインをさっそく導入してみて便利❗️
Chapter.16
@pytest.mark.parametrize でパラメータ化するのは普段から使っているけど,id や ids にテスト識別子を設定するという Tips は今まで活用できてなかった.確かにパラメータ化したテストで失敗すると判別しにくく感じるときもあった.さっそく仕事でも使うようにした👌
その他
他に読書メモに残したことを箇条書きにしておく❗️
pytest --setup-showでフィクスチャの実行順をログに出力できるpytest --tb=noでテスト失敗時のトレースバックを非表示にできるpytest --showlocalsでテスト失敗時にローカル変数を表示できるconftest.pyでフィクスチャを共有できる@pytest.fixtureの名前を変更できる- requests をモックできる Responses
が便利そう
誤植
出版社サイトに掲載されていない誤植を見つけたのでメモしておく📝
- P.120:
対処できるしょうか。→対処できるでしょうか。 - P.122:
簡単かかもしれないが→簡単かもしれないが
X ポスト🔗
仕事で pytest を使っててもっと自信持って書けるように「テスト駆動 Python 第2版」を読んでみたんだけどめっちゃ良かった❗pytest の機能・記法・設定など知れて良かったことばかりだった👏 #adhttps://t.co/ZBztlDybst
— カック (@kakakakakku) 2024年3月28日
