Skip to Content
ファストAPI
book

ファストAPI

by Bill Lubanovic
March 2025
Intermediate to advanced
280 pages
3h 20m
Japanese
O'Reilly Media, Inc.
Content preview from ファストAPI

第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)。

fapi 1201
図12-1. テストピラミッド

何をテストすべきか

コードを書く際に、どのようなをテストすべきか?基本的には、与えられた入力に対して、正しい出力が得られるかどうかを確認する。 以下のようなチェックが考えられる:

  • 不足している入力

  • 重複入力

  • 入力タイプが正しくない

  • 入力順序が正しくない

  • 無効な入力値

  • 巨大な入力または出力

エラーはどこにでも起こりうる:

ウェブ・レイヤー

Pydanticはモデルとの不一致を検出し、422 HTTPステータスコードを返す。

データレイヤー

データベースは、データの欠落や重複、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

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

GitHubアクションを学ぶ

GitHubアクションを学ぶ

Brent Laster
仕事ではじめる機械学習 第2版

仕事ではじめる機械学習 第2版

有賀 康顕, 中山 心太, 西林 孝

Publisher Resources

ISBN: 9798341624658