第12章. テスト
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
QAエンジニアがバーに入った。ビールを注文する。ビールを0本注文する。9999999999999ビールを注文する。トカゲを注文する。ビールを-1本注文する。ueicbksjdhdを注文する。
初めて本物の客が入ってきて、トイレはどこかと尋ねる。バーが炎上し、全員が死亡した。
ブレナン・ケラー(ツイッター
プレビュー
この 章では、FastAPI サイトで実行する単体テスト、統合テスト、フル テストについて説明します。pytestと自動テスト開発について説明します。
ウェブAPIテスト
すでに エンドポイントが追加されるにつれて、いくつかの手動APIテストツールを見てきただろう:
-
HTTPie
-
リクエスト
-
HTTPX
-
ウェブブラウザ
さらに多くのテストツールがある:
-
Curlは非常によく知られているが、。本書では、よりシンプルな構文であるHTTPieを代わりに使っている。
-
Httpbinは、Requestsの作者によって書かれた、HTTPリクエストに関する多くのビューを提供するフリーのテストサーバである。
-
Postmanは完全なAPIテストプラットフォームである。
-
Chrome DevToolsは、Chromeブラウザーの一部で、豊富なツールセットである。
これらはすべて、前の章で見たような、完全な(エンドツーエンドの)テストに使うことができる。 これらの手動テストは、コードを入力した直後に素早く検証するのに役立ってきた。
しかし、後で行った変更によって、先に行った手動テストが破壊された (リグレッション) 場合はどうするのだろうか? コードが変更されるたびに、何十ものテストを再実行するのは避けたいだろう。 そのような場合に、自動テストが重要になる。この章の残りは自動テストに焦点を当て、pytest を使って自動テストを構築する方法を説明する。
どこでテストするか
検査の種類については触れた:
- 単位
-
レイヤー内で、個々の関数をテストする。
- 統合
-
層を超えて、接続性をテストする
- フル
-
テスト 完全なAPIとその下のスタック
これらをテストピラミッドと呼び、幅は各グループに含まれるべきテストの相対数を示すこともある(図12-1)。
図12-1. テストピラミッド
何をテストすべきか
コードを書く際に、どのようなをテストすべきか?基本的には、与えられた入力に対して、正しい出力が得られるかどうかを確認する。 以下のようなチェックが考えられる:
-
不足している入力
-
重複入力
-
入力タイプが正しくない
-
入力順序が正しくない
-
無効な入力値
-
巨大な入力または出力
エラーはどこにでも起こりうる:
- ウェブ・レイヤー
-
Pydanticはモデルとの不一致を検出し、
422HTTPステータスコードを返す。 - データレイヤー
-
データベースは、データの欠落や重複、SQLクエリの構文エラーに対して例外を発生させる。 巨大なデータ結果を、ジェネレータやページネーションで分割して渡すのではなく、一括して渡すと、タイムアウトやメモリの枯渇が発生する可能性がある。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access