Django:如何将用户与请求工厂相关联

2024-04-26 09:39:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为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是否正确地利用了请求。我是否正确地告诉测试“以这个用户的身份向tourney页面发出post请求,并尝试提交一个deck”?


Tags: django用户self表单responserequestdefcreate
1条回答
网友
1楼 · 发布于 2024-04-26 09:39:26

我认为RequestFactory和客户机是测试django视图的两种不同方法。在

rf.post返回的request将直接传递给视图函数。如果你这样做,我想你会发现,用户将被检测为登录。在

我看了source和文档,看不出测试客户机在哪里接受请求。您可以使用测试客户端登录用户,方法是:

self.client.login(
   username=u.username,
   password='password')

相关问题 更多 >