在与本地不同的环境中,我为我的Django项目设置了DJ_SSL_REDIRECT = True
。
但是现在,与REST API端点相关的所有单元测试在其他环境中运行时都会失败(例如,在Travis CI中)。
由于301
设置,所有HTTP响应都是2XX
(我在测试中期待4XX
或DJ_SSL_REDIRECT
)在文档中解释:
如果将SECURE_SSL_REDIRECT设置为True,SecurityMiddleware将永久(HTTP 301)将所有HTTP连接重定向到HTTPS。
如何以简单的方式解决这个问题,让我的单元测试保持相关性?感谢。
注意:我使用的是Django Rest Framework 3.5
答案 0 :(得分:5)
我遇到了类似的问题并使用“安全”属性解决了测试客户端post ang get函数,例如
response = self.client.post('/accounts/signup/', self.getvalues(), follow=True, secure=True)
希望这有帮助!
米克
答案 1 :(得分: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