2016-11-07 128 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