Django のユニットテストで Request を作るには、response の wsgi_request を取得するのが楽
Django
2022-03-21 08:57 (4年前)

Django のユニットテストを作っていいて、 Request (WSGIRequest) が欲しくなる場合がある。
django.test.RequestFactory というものがあるので、これを使うとリクエストを作れるが、作るのがけっこう大変な上、ミドルウェアを通過していないリクエストのためビュー相当のテストをする時に使うのが難しい。
それより、テストクライアントを使って実際に適当なビューにリクエストを行うと、返ってきたレスポンスの中に wsgi_request というリクエストプロパティがついてくるので、これを使ったほうが楽。ミドルウェアも通過したものになっている。
client = self.client_class()
response = client.post(...)
request = response.wsgi_request
評価をお願いします (会員登録・ログイン不要)
まだ評価がありません
関連記事
Django を 5.1 にアップグレードしたら、管理サイトの Inline で、プライマリーキーが表示される場所に `{'name': 'id', 'label': 'ID', 'help_text': '', 'field': 'id', 'is_hidden': True}` のような文字列が表示される場合の対応
django-allauth で、ソーシャルアカウントプロバイダーを決め打ちしてログインビュー・リダイレクトビューを返す (AWS Cognitoを使う時など)
Django5にして依存ライブラリも更新したら、メール送信で SSL: CERTIFICATE_VERIFY_FAILED エラーが出るようになった
Django の ユニットテストの assertEqual の引数の first, second は実際は expected, actual
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。
開発相談をお待ちしています。