django-rest-framework APITestCase + assertEqual of timestamp

时间:2015-08-11 19:56:15

标签: django unit-testing timestamp django-rest-framework

我的模型中有一个“auto_now_add”时间戳,如下:

created_on = models.DateTimeField(auto_now_add = True)

我使用精彩的DRF3.0开发了一个REST API,在我的单元测试中,我希望有类似的东西:

self.assertEqual(response.data, data)

我的问题很简单:如何提前知道此时间戳的值,以便我可以用实际值测试它(assertEqual)?

1 个答案:

答案 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