Django:如何将用户与请求工厂相关联
Django: How to associate a user with a request factory
我正在为 Django 站点上的表单编写一些测试。我想测试登录用户是否能够在假设输入正确的情况下使用该表单。为此,我正在使用 Django 请求工厂。我似乎无法让我的测试用户登录。那,或者我什至没有正确提出请求。我不确定。相关代码如下:
def create_user():
username = 'User '+id_generator()
return User.objects.create(username = username, password = 'password')
def test_can_register_deck(self):
t = create_empty_tourney()
u = create_user()
d = create_deck(u)
rf = RequestFactory()
request = rf.post(reverse('tourney:tourney', args=(t.slug,)),{'deck' : d})
request.user = u
response = self.client.get(reverse('tourney:tourney', args=(t.slug,)), request)
self.assertEqual(response.status_code, 200)
请求必须认为用户已登录,否则测试的其余部分将无法运行。这不会引发任何错误,但我什至不确定我的 response
是否正确使用了请求。我是否正确地告诉 "make a post request to the tourney page as this user, and try to submit a deck" 测试?
我认为 RequestFactory
和客户端是测试 django 视图的两种不同方式。
从 rf.post
返回的 request
意味着直接传递给视图函数。如果您这样做,我想您会发现,用户将被检测为已登录。
我查看了 source 和文档,但没有看到测试客户端在何处接受请求。您可以使用测试客户端登录用户:
self.client.login(
username=u.username,
password='password')
我正在为 Django 站点上的表单编写一些测试。我想测试登录用户是否能够在假设输入正确的情况下使用该表单。为此,我正在使用 Django 请求工厂。我似乎无法让我的测试用户登录。那,或者我什至没有正确提出请求。我不确定。相关代码如下:
def create_user():
username = 'User '+id_generator()
return User.objects.create(username = username, password = 'password')
def test_can_register_deck(self):
t = create_empty_tourney()
u = create_user()
d = create_deck(u)
rf = RequestFactory()
request = rf.post(reverse('tourney:tourney', args=(t.slug,)),{'deck' : d})
request.user = u
response = self.client.get(reverse('tourney:tourney', args=(t.slug,)), request)
self.assertEqual(response.status_code, 200)
请求必须认为用户已登录,否则测试的其余部分将无法运行。这不会引发任何错误,但我什至不确定我的 response
是否正确使用了请求。我是否正确地告诉 "make a post request to the tourney page as this user, and try to submit a deck" 测试?
我认为 RequestFactory
和客户端是测试 django 视图的两种不同方式。
从 rf.post
返回的 request
意味着直接传递给视图函数。如果您这样做,我想您会发现,用户将被检测为已登录。
我查看了 source 和文档,但没有看到测试客户端在何处接受请求。您可以使用测试客户端登录用户:
self.client.login(
username=u.username,
password='password')