我定义了一些时间戳在数据库中auto_now_add
事件,应将信息存储与它的时间戳,同时被存储的事件。覆盖auto_now的单元测试
事件的描述是一样的东西
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()
我必须用昨天的时间戳生成事件(模块将会总结它们)。问题是你不能覆盖时间戳。时间戳是它生成的事件的时间戳,documentation表示非常清楚。
那么,如何生成与测试appropiate时间戳数据?我有几个想法:
- 也许以不同的方式在Model类之外生成数据库数据。在哪里以及如何?
- 不知怎的,定义不同的类或测试过程中改变类的行为方式不同,像
_
if testing:
timestamp = models.DateTimeField(auto_now_add=True)
else:
timestamp = models.DateTimeField(auto_now_add=False)
或者,也许有一个更简单的方法来做到这一点...任何想法?
'timestamp = models.DateTimeField(auto_now_add = testing)'如何简化? –
如果测试,'testing'变量将为真?这会很棒,但在这种情况下,它应该是'auto_now_add = not testing',我想... – Khelben
这是你的问题和你的例子,随时修复它。 –