Django 测试用例获得与 Firefox 或 Chrome 不同的重定向
Django Test Case gets diffrent redirect than Firefox or Chrome
尝试在一个项目上工作并开始关注单元测试。
我很困惑为什么 client.get 得到的重定向与 Firefox 和 Chrome 不同。
下面有详细信息,但有人可以告诉我这是怎么回事吗。
- Django 版本 3
- Python 版本 3.8
- 运行 在 Ubuntu 在 WSL 在 windows.
我的视图功能。
class UserDashboardView(View):
def get(self, request, *args, **kwargs):
return HttpResponseRedirect('/accounts/login')
我的测试用例
import unittest
from django.test import TestCase
class DashboardPageTest(TestCase):
def test_unauthenticated_user_redirected_to_login(self):
response = self.client.get('/dashboard')
print(response)
发生了什么。
1 - 如果我在 Chrome 和 Firefox 中转到 /dashboard,调试显示 302,位置键为 /accounts/login,因此浏览器遵循 /accounts/login
2 - 如果我 运行 单元测试(python manage.py 测试)打印响应 returns
<HttpResponsePermanentRedirect status_code=301, "text/html; charset=utf-8", url="/dashboard/">
我有一种感觉,我只是不了解浏览器与 TestCase 的重定向方式。有人可以解释一下吗?
您在单元测试中遗漏了尾部斜杠,因此它正在从 /dashboard
重定向到 /dashboard/
。
解决了。
在 Django test client gets 301 redirection when accessing url
找到解决方案
基本上 Django 很有帮助,并在请求的末尾添加了一个 /。因此它发回了一个永久重定向让我知道。 Chrome firefox 肯定已经处理过了
将测试用例中的行更改为
response = self.client.get('/dashboard/') 而不是 response = self.client.get('/dashboard') 并且它 returns 302。现在我看看浏览器 我打算在浏览器中访问 /dashboard/。
尝试在一个项目上工作并开始关注单元测试。 我很困惑为什么 client.get 得到的重定向与 Firefox 和 Chrome 不同。
下面有详细信息,但有人可以告诉我这是怎么回事吗。
- Django 版本 3
- Python 版本 3.8
- 运行 在 Ubuntu 在 WSL 在 windows.
我的视图功能。
class UserDashboardView(View):
def get(self, request, *args, **kwargs):
return HttpResponseRedirect('/accounts/login')
我的测试用例
import unittest
from django.test import TestCase
class DashboardPageTest(TestCase):
def test_unauthenticated_user_redirected_to_login(self):
response = self.client.get('/dashboard')
print(response)
发生了什么。
1 - 如果我在 Chrome 和 Firefox 中转到 /dashboard,调试显示 302,位置键为 /accounts/login,因此浏览器遵循 /accounts/login
2 - 如果我 运行 单元测试(python manage.py 测试)打印响应 returns
<HttpResponsePermanentRedirect status_code=301, "text/html; charset=utf-8", url="/dashboard/">
我有一种感觉,我只是不了解浏览器与 TestCase 的重定向方式。有人可以解释一下吗?
您在单元测试中遗漏了尾部斜杠,因此它正在从 /dashboard
重定向到 /dashboard/
。
解决了。 在 Django test client gets 301 redirection when accessing url
找到解决方案基本上 Django 很有帮助,并在请求的末尾添加了一个 /。因此它发回了一个永久重定向让我知道。 Chrome firefox 肯定已经处理过了 将测试用例中的行更改为
response = self.client.get('/dashboard/') 而不是 response = self.client.get('/dashboard') 并且它 returns 302。现在我看看浏览器 我打算在浏览器中访问 /dashboard/。