网站 POST 有效,但检查信息是否已更新的单元测试失败
Website POST works, but unit test to check that information has been updated fails
我正在尝试测试我的 POST 到 /enrolment/personal_information/ 是否成功更新了用户数据,但似乎无法通过。奇怪的是,更新在我的网站上有效,但我的测试失败了。
test.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'
谢谢
您可能会更新测试数据库中的用户,但您必须使用 user.refresh_from_db()
更新您在函数中使用的用户对象。
编辑:
如果您 return 来自请求的用户数据,您也可以尝试将其与字符串进行比较。例如:self.assertEqual(response.data["username"], "testuser")
我正在尝试测试我的 POST 到 /enrolment/personal_information/ 是否成功更新了用户数据,但似乎无法通过。奇怪的是,更新在我的网站上有效,但我的测试失败了。
test.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'
谢谢
您可能会更新测试数据库中的用户,但您必须使用 user.refresh_from_db()
更新您在函数中使用的用户对象。
编辑:
如果您 return 来自请求的用户数据,您也可以尝试将其与字符串进行比较。例如:self.assertEqual(response.data["username"], "testuser")