Перезаписать auto_now для unittest
Я определил некоторые временные метки для событий в базе данных какauto_now_add
, поскольку информация должна храниться с ее отметкой времени в то же время, когда сохраняется событие.
Описание событий что-то вроде
class NewEvent(models.Model):
'''
Individual event
'''
name = models.CharField(max_length=100)
quantity = models.FloatField(null=True)
timestamp = models.DateTimeField(auto_now_add=True)
Чтобы проверить модуль, я генерирую некоторую информацию в базе данных вtest.py
файл, таким образом:
for event in EVENT_TYPES:
time = datetime.datetime.now() - datetime.timedelta(days=1)
for i in range(48):
time = time.replace(hour=i / 2)
NewEvent(name=event,
timestamp=time,
quantity=i).save()
Я должен генерировать события с отметкой времени вчерашнего дня (модуль затем суммирует их). Проблема в том, что вы не можете перезаписать метку времени. Временная метка это та, когда происходит событие,документация утверждает, что очень четко.
Итак, как генерировать данные с соответствующими временными метками для тестирования? У меня было несколько идей:
Может быть, генерировать данные базы данных другим способом, вне классов Model. Где и как?Как-то определить другой класс или изменить класс, чтобы вести себя по-разному во время теста, что-то вроде_
if testing:
timestamp = models.DateTimeField(auto_now_add=True)
else:
timestamp = models.DateTimeField(auto_now_add=False)
Или, может быть, есть еще более простой способ сделать это ... Есть идеи?