2

カスタムミドルウェアモジュールを使用してすべてのリクエストでサブドメイン属性を作成する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がブラウザに入力したかのようにテストが実行されます。

4

1 に答える 1

1

テスト中、すべてのミドルウェアは正常に動作します。したがって、ビュー全体をテストできます (そして、リクエストに固有のものが返されるかどうかを確認できます)。これは機能テストです。または、 を作成MockRequestしてミドルウェアに直接渡すこともできますprocess_request。これは単体テストです。実際、私は両方を完全に使用します。

于 2012-04-18T03:31:46.083 に答える