gpt4 book ai didi

Django assertEqual 不显示实际值与预期值

转载 作者:行者123 更新时间:2023-12-04 06:13:07 28 4
gpt4 key购买 nike

所以我正在学习如何在 Django 中练习 TDD,但遇到了一些小问题。我创建了一个自定义用户对象,它以一对一的关系链接到经过身份验证的系统用户。我有以下测试,它练习了我的自定义用户类的一部分:

def test_creating_a_user_with_attributes(self):
myuser = Myuser.objects.create_user('Gary', email='me@email.com')
current_time = now()
myuser.birthday = current_time
myuser.save()
first_user = Myuser.objects.all()[0]
self.assertEqual(first_user.birthday, current_time, 'first_user.birthday should be equal to the current_time')

问题是我的测试失败了,我无法立即看出原因。断言失败报告了我提供的消息,我很困惑,因为我确定生日被设置为现在的值。我最终不得不重构我的断言以明确失败的值(value)。

    self.assertEqual(first_user.birthday, current_time,
'first_user.birthday ' + str(first_user.birthday) + ' should equal ' + str(current_time))

这表明生日是日期字段而不是日期时间字段。我的问题是是否存在某种替代形式的断言将预期值和实际值转储为失败消息的一部分,或者我是否以某种方式滥用或误解了 API?

最佳答案

Django 没有实现 assertEqual,它只是使用 Python 的 unittest 模块。

您需要为您的测试用例类将 longMessage 属性设置为 True,如下所示:

class VerboseTestCase(TestCase):
longMessage = True

def test_creating_a_user_with_attributes(self):
myuser = Myuser.objects.create_user('Gary', email='me@email.com')
current_time = now()
myuser.birthday = current_time
myuser.save()
first_user = Myuser.objects.all()[0]
self.assertEqual(first_user.birthday, current_time, 'first_user.birthday should be equal to the current_time')

如果测试失败,将输出如下内容:

AssertionError: <datetime 1> != <datetime 2> : first_user.birthday should be equal to the current_time

这在 Python's unittest docs 中有解释.

关于Django assertEqual 不显示实际值与预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13211504/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com