django - 网站 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'
谢谢
解决方案
您可以更新测试数据库中的用户,但您必须使用user.refresh_from_db()
更新您在函数中使用的用户对象。
编辑:如果您从请求中返回用户数据,您也可以尝试将其与字符串进行比较。例如:self.assertEqual(response.data["username"], "testuser")
推荐阅读
- flask - 使用 Marshmallow 对多种格式进行序列化/反序列化
- sql - Oracle 中的查询不遵守 AND 和 WHERE 条件
- r - R 3.5.2:从动物园加载库存数据时出错
- functional-programming - lodash/fp 范围的不同行为
- webpack - webPack 开发服务器代理重写 URL 以响应
- c# - EF Core 2.0 全局过滤器
- c# - 在 C# 中使用 Windows 窗体应用程序中的图表的聚集柱形图
- php - 在 JSON_ENCODE 输出中转义 \n
- python - 在 Twitter API 中获取推文的位置并按状态分组
- reactjs - 为什么在反应材质 UI 中选择框移动?