我发现了一些与URL重定向测试有关的问题,看看URL重定向是否位于所需的目标URL。不过,我想知道,是否有一个属性表明最终的目标URL是什么
c = Client()
r = c.get('/sr/portfolios/', follow=True)
r.final_url # something like this?
似乎重定向链只告诉你被重定向通过的URL,但不是那些你最终登陆的URL
r.redirect_chain
# [('http://testserver/sr/?next=/sr/portfolios/', 302)]
我发现了相关(但不完全相同)的主题:Django:测试页面是否重定向到了所需的url
为了突出显示解决方案,您可以使用r.request['PATH_INFO']
获得最终url。CCD_ 2也起作用。
我相信还有其他方法可以做到这一点,但一个简单的in
检查就足够了吗?
def test_final_url(self):
final_url = reverse('your_url_name')
found = False
for item in r.redirect_chain:
if final_url in item[0]:
found = True
break
self.assertTrue(found)
由于Python列表没有保证的顺序,我不确定查看r.redirect_chain[-1][0]
是否100%安全,但它可能是最快的解决方案。