8

ミドルウェアのテストに Django テスト Client() を使用すると問題が発生します。セッションミドルウェアを具体的にエミュレートしているようです。ただし、RequestFactory をベースにしているため、ミドルウェアは動作していないようです。

テストクライアントにリクエストとレスポンスの両方にミドルウェアを適用させる方法はありますか? ミドルウェアを具体的にテストする他の方法がしばしばあることを理解しています。ただし、場合によっては、完全なミドルウェア スタックでリクエストをテストしたいと考えています。これを行う方法はありますか?

Client を拡張してその request() クラスを変更し、関数の先頭でミドルウェア スタックを介してリクエストを実行し、関数の下部でミドルウェア スタックを介して応答を実行することを考えていました。そんなことがうまくいくと思いますか?そうでない場合は、その理由を説明するリソースを教えていただけますか?

4

1 に答える 1

7

が必要な場合がありoverride_settingsます。

https://docs.djangoproject.com/en/dev/topics/testing/tools/#django.test.override_settingsを参照してください。

@override_settings(MIDDLEWARE_CLASSES=(
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
))
class ViewTest(TestCase):

    def setUp(self):
        pass
于 2015-01-02T15:43:14.633 に答える