October 2025
Intermediate to advanced
712 pages
9h 46m
Japanese
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
認証システムが機能するようになったので、これを使ってユーザを識別し、彼らが作成したすべてのリストを表示したい。
そのためには、ログイン済みユーザを前提とするFTを書く必要がある。 各テストで(時間がかかる)ログインメールの手順を踏む代わりに、 その部分をスキップできるようにしたい。
これは関心の分離の問題だ。機能テストは単体テストとは異なり、 通常は単一の断言を持たない。 しかし概念的には、単一の事象をテストすべきだ。 全てのFTがログイン/ログアウト機構をテストする必要はない。 その部分を「ごまかす」方法を見つけられれば、 テストが重複したセットアップ手順を繰り返すのを待つ時間を減らせる。
FTでの重複排除はやりすぎないこと。 FTの利点の一つは、 アプリケーションの異なる部分間の 奇妙で予測不可能なやり取りを 捕捉できることだ。
この短い章では、新しいFTの記述を始める。 これを機に、FT向けテストフィクスチャを用いた重複排除について説明する。 またPythonの便利なデコレータ構文を使い、明示的な待機処理のための便利なヘルパーをリファクタリングする。
ユーザがサイトに戻った時にクッキーが残っていることはよくある。 つまり「事前認証済み」の状態だ。 だからこれは全く非現実的な手抜きではない。 設定方法は以下の通りだ:
src/functional_tests/test_my_lists.py (ch22l001)
fromdjango.confimportsettingsfromdjango.contrib.authimportBACKEND_SESSION_KEY,SESSION_KEY,get_user_modelfromdjango.contrib.sessions.backends.dbimportSessionStorefrom.baseimportFunctionalTestUser=get_user_model()classMyListsTest(FunctionalTest):defcreate_pre_authenticated_session(self,):user=User.objects.create(=)session=SessionStore()session[SESSION_KEY]=user.pksession[BACKEND_SESSION_KEY]=settings.AUTHENTICATION_BACKENDS[0]session.save()## to set a cookie we need to first visit the domain.## 404 pages load the quickest!self.browser.get(self.live_server_url+"/404_no_such_url/ ...
Read now
Unlock full access