Skip to Content
Pythonによるテスト駆動開発, 3rd Edition
book

Pythonによるテスト駆動開発, 3rd Edition

by Harry Percival
October 2025
Intermediate to advanced
712 pages
9h 46m
Japanese
O'Reilly Media, Inc.
Content preview from Pythonによるテスト駆動開発, 3rd Edition

章21 テストの分離にモックを使う

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

この章では、ログインシステムの仕上げを行う。 その過程で、モックの別の活用法を探る: システムの一部を互いに隔離することだ。これにより より的を絞ったテストが可能になり、組み合わせ爆発を防ぎ、 テスト間の重複を減らせる。

注記

本章では、いわゆる「ロンドン流TDD」の方向へ移行していく。 これは本書で主に紹介している「古典的」あるいは「デトロイト流」TDDの変種だ。 詳細はここでは割愛するが、 ロンドン流TDDはモック化とシステム部品の分離をより重視する。 常に言えることだが、長所と短所がある! 詳しくは オンライン付録「テストの分離とテストの声に耳を傾ける」を参照のこと

その過程で、unittest.mock の便利な機能をいくつか学び、 また「十分な」テストの数がどれくらいかについても議論する。

ログインビューで認証バックエンドを使用する

前の章で認証バックエンドの準備ができた。 今度はログインビューでそのバックエンドを使う必要がある。 だがまず、メモ帳に書いてある通り、settings.pyに追加しなければならない:

src/superlists/settings.py (ch21l001)

AUTH_USER_MODEL = "accounts.User"
AUTHENTICATION_BACKENDS = [
    "accounts.authentication.PasswordlessAuthenticationBackend",
]

[...]

簡単だったな!

次に、ビューで何が起こるべきかをテストしよう。 再びスパイクを振り返ると:

src/accounts/views.py

def login(request):
    print("login view", file=sys.stderr)
    uid = request.GET.get("uid")
    user = auth.authenticate(uid=uid)
    if user is not None:
        auth
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

イーサリアムをマスターする, 2nd Edition

イーサリアムをマスターする, 2nd Edition

Carlo Parisi, Alessandro Mazza, Niccolo Pozzolini, Gavin Wood, Andreas M. Antonopoulos
Excel用Python

Excel用Python

Felix Zumstein

Publisher Resources

ISBN: 0642572274771