首页 > 解决方案 > 网站 POST 有效,但检查信息是否已更新的单元测试失败

问题描述

我试图测试我的 POST 到 /enrolment/personal_information/ 是否成功更新了用户数据,但似乎无法让它通过。奇怪的是,更新在我的网站上有效,但我的测试失败了。

测试.py

def test_user_information_updated_on_success(self):
        user = User.objects.create_superuser('username')
        EmailAddress.objects.create(user=user, email="example@example.com", primary=True, verified=True)
        self.client.force_login(user)
        response = self.client.post('/enrolment/personal_information/', {'user': user.id, 'first_name': 'testuser', 'surname': 'testsurname', 'gender': 'M', 'dob': '1984-09-17 00:00:00'})
        self.assertEqual(response.status_code, 302) # this passes - redirects to the next page
        self.assertEqual(user.personalinformation.first_name, 'testuser') # this fails

错误:

AssertionError: '' != 'testuser'

谢谢

标签: djangoseleniumdjango-formstdd

解决方案


您可以更新测试数据库中的用户,但您必须使用user.refresh_from_db() 更新您在函数中使用的用户对象。

编辑:如果您从请求中返回用户数据,您也可以尝试将其与字符串进行比较。例如:self.assertEqual(response.data["username"], "testuser")


推荐阅读