gpt4 book ai didi

python - 如何在 Django 中测试 auto_now_add

转载 作者:行者123 更新时间:2023-12-04 16:57:52 25 4
gpt4 key购买 nike

我有 django 1.11 应用程序,我想为我的解决方案编写单元测试。

我想测试注册日期功能。

模型.py:

class User(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
registration_date = models.DateTimeField(auto_now_add=True)

def get_registration_date(self):
return self.registration_date

我也在模型工厂使用 django-boy:
工厂.py
  class UserFactory(factory.DjangoModelFactory):
class Meta:
model = models.User
first_name = 'This is first name'
last_name = 'This is last name'
registration_date = timezone.now()

测试文件
def test_get_registration_date(self):
user = factories.UserFactory.create()
self.assertEqual(user.get_registration_date(), timezone.now())

问题是我收到了 AssertionError :
AssertionError: datetime.datetime(2018, 4, 17, 9, 39, 36, 707927, tzinfo=<UTC>) != datetime.datetime(2018, 4, 17, 9, 39, 36, 708069, tzinfo=<UTC>)

最佳答案

您可以使用 mock :

import pytz
from unittest import mock

def test_get_registration_date(self):
mocked = datetime.datetime(2018, 4, 4, 0, 0, 0, tzinfo=pytz.utc)
with mock.patch('django.utils.timezone.now', mock.Mock(return_value=mocked)):
user = factories.UserFactory.create()
self.assertEqual(user.get_registration_date(), mocked)

关于python - 如何在 Django 中测试 auto_now_add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49874923/

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