我的模型中有一个“auto_now_add”时间戳,如下:
created_on = models.DateTimeField(auto_now_add = True)
我使用精彩的DRF3.0开发了一个REST API,在我的单元测试中,我希望有类似的东西:
self.assertEqual(response.data, data)
我的问题很简单:如何提前知道此时间戳的值,以便我可以用实际值测试它(assertEqual)?
答案 0 :(得分:0)
你期望用它测试什么? Django正确设置created_on?这是Django测试的一项工作。你应该测试自己的代码。
对于单元测试,您应该只测试您的方法,甚至不用保存模型。这要快得多,而且通常足够了。您需要保存模型并仅在检查查询时检查已保存的数据,因为它很难在不保存的情况下进行测试。
当您需要将数据保存到数据库时,另一个用例是进行功能/集成测试时。但是,你可能不会测试单个字段,但会影响整体效果。
如果您确实要设置确切的值,可以尝试直接在Django代码中进行模拟(我担心这会很快给您带来问题):
from mock import patch
with patch('django.db.models.fields.datetime') as datetime:
datetime.date.today.return_value = fixed_date
# your testing code