2016-11-07 30 views
2

在與本地不同的環境中,我爲我的Django項目設置了DJ_SSL_REDIRECT = TrueDjango SECURE_SSL_REDIRECT和301 HTTP響應

但是現在,所有與REST API端點相關的單元測試在另一個環境中運行時(例如在Travis CI中)失敗。

正在發生的事情是,所有的HTTP響應是301(我期待在我的測試2XX4XX),因爲DJ_SSL_REDIRECT設置的,如DOC解釋說:

如果設置SECURE_SSL_REDIRECT設置誠然,SecurityMiddleware將永久(HTTP 301)將所有HTTP連接重定向到HTTPS。

如何以簡單的方式處理這個問題,保持我的單元測試的相關性?謝謝。

注:我使用Django的REST框架3.5

+0

你有沒有在這裏得到答覆?我遇到了同樣的問題。我的單元測試我們的分期構建失敗,301重定向。 –

回答

3

我也曾有過類似的問題,解決它使用「安全」的測試客戶端後昂得功能-attribute,像

response = self.client.post('/accounts/signup/', self.getvalues(), follow=True, secure=True) 

希望這會有所幫助!

米科

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