Django测试单元登录用户



我需要一些单元测试来检查用户成功登录后是否可以打开个人资料编辑页面,我应该如何做到这一点?

我尝试了这段代码,但它显示了一个错误。我是否需要使用自己的视图来注册用户然后登录或者有一些单元测试模块?
class UserProfilePage(TestCase):
def setUp(self):
self.credentials = {
'username': 'test_user',
'password': 'secret'}
user = User.objects.create_user(**self.credentials)
self.user_profile = {
'user': user,
'first_name': 'Test_1',
'surname': 'test_surname',
'about_me': 'some_info',
'email': 'test@anymail.com',
}
UserProfile.objects.create(**self.user_profile).save()
self.user_id = UserProfile.objects.get(user=user.id)
def test_profile_page_and_current_template(self):
response = self.client.get('/blog/user/profile/', self.user_id)
self.assertEqual(response.status_code, 200)
ValueError: Cannot query "Test_1": Must be "User" instance.

客户端API允许您像这样登录用户:

self.client.force_login(user)

在您的测试中访问配置文件页面之前运行它。

你的代码中也有一个错误。

...
self.user_id = UserProfile.objects.get(user=user)
...

在这里,您将配置文件对象分配给user_id,然后尝试将user_id作为请求中的参数传递,而不是用户ID。我猜这就是你得到错误的原因。

我建议只将user设置为对象属性;你不需要其他任何东西。然后在测试中用self.user.id访问它。

参见:https://docs.djangoproject.com/en/4.0/topics/testing/tools/#django.test.Client.force_login

最新更新