2016-11-07 5 views
2

ローカルと異なる環境では、私はDjangoプロジェクトにDJ_SSL_REDIRECT = Trueを設定しました。Django SECURE_SSL_REDIRECTと301のHTTP応答

しかし、別の環境(Travis CIなど)で実行した場合、REST APIエンドポイントに関連するすべてのユニットテストが失敗するようになりました。

あなたが設定SECURE_SSL_REDIRECTを設定した場合:何が起こっている

は、docで説明したように、すべてのHTTP応答は、理由DJ_SSL_REDIRECT設定に(私は私のテストで2XX4XXを期待してい)301であるということです確かに、SecurityMiddlewareはHTTPSへのすべてのHTTP接続を永久に(HTTP 301)リダイレクトします。

単体テストを適切に保ちながら、これを簡単な方法で処理するにはどうすればよいですか?ありがとう。

注:私はDjangoの残りのフレームワークを使用していることは3.5

+0

あなたはここに返答しましたか?私は同じ問題を抱えています。ステージングビルドの私のユニットテストは301リダイレクトで失敗します。 –

答えて

3

私は同様の問題を持っていたし、

response = self.client.post('/accounts/signup/', self.getvalues(), follow=True, secure=True) 
のように、機能を取得し、テストクライアントポストANGため-attributeを「確保」を使用して、それを解決しました

希望します。

ミッコ

0

あなたはコードがmanage.py testによって呼び出されているかどうかに基づいてSECURE_SSL_REDIRECTを設定することができます。これをあなたのsettings.pyに入れてください:

# Are we testing? i.e. was this code run via "manage.py test" 
TESTING = len(sys.argv) > 1 and sys.argv[1] == 'test' 
SECURE_SSL_REDIRECT = False if TESTING else True 
関連する問題