カスタムミドルウェアモジュールを使用してすべてのリクエストでサブドメイン属性を作成するdjangoアプリがあります。この属性には文字列が割り当てられます。システムテスト中にすべてが機能しますが、この属性で自動テストを実行したいので、私の質問は次のとおりです。
単体テスト中にリクエストを生成するとき、コードをテストできるように request.subdomain を文字列値に設定するにはどうすればよいですか? カスタム リクエストを作成してテスト クライアントにフィードする必要がありますか? 御時間ありがとうございます。
以下の解決策
カスタム ミドルウェアは HTTP_HOST 文字列を読み取り、サブドメインを属性 request.subdomain に保存します。私の問題は、単体テスト中にサブドメイン要求をクライアントに噴出する方法にありました。方法は次のとおりです。
テスト クライアント オブジェクトを使用すると、request.META ディクショナリ内の任意のキー:値のペアを事前に設定できます。ホスト名をサブドメインに設定する場合にテストを実行する場合は、次のようにします。
host = 'subdomain1.test.com:8000'
c = Client(HTTP_HOST=host)
response = c.get(path='/home')
そして、誰かsubdomain1.test.com:8000/home
がブラウザに入力したかのようにテストが実行されます。