django rest框架APITestCase+;时间戳的assertEqual
我的模型中有一个“auto_now_add”时间戳,如下所示:django rest框架APITestCase+;时间戳的assertEqual,django,unit-testing,timestamp,django-rest-framework,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)?您希望用它测试什么?Django正确地创建了?这是Django测试
created_on = models.DateTimeField(auto_now_add = True)
我使用出色的DRF3.0开发了一个REST API,在我的单元测试中,我希望有如下内容:
self.assertEqual(response.data, data)
我的问题很简单:如何预先知道这个时间戳的值,以便用实际值测试它(assertEqual)?您希望用它测试什么?Django正确地创建了?这是Django测试的工作。您应该测试自己的代码 对于单元测试,您应该只测试您的方法,而不保存您的模型。这要快得多,而且通常已经足够了。只有在检查查询时,才需要保存模型并检查保存的数据,因为不保存就很难进行测试 当您需要将数据保存到数据库时,另一个用例是在进行功能/集成测试时。但是,您可能不会测试单个字段,而是测试整体效果 如果您真的需要设置确切的值,您可以尝试直接在Django代码中模拟它(我担心这会很快给您带来问题):
你希望用它来测试什么?Django正确地创建了?这是Django测试的工作。您应该测试自己的代码 对于单元测试,您应该只测试您的方法,而不保存您的模型。这要快得多,而且通常已经足够了。只有在检查查询时,才需要保存模型并检查保存的数据,因为不保存就很难进行测试 当您需要将数据保存到数据库时,另一个用例是在进行功能/集成测试时。但是,您可能不会测试单个字段,而是测试整体效果 如果您真的需要设置确切的值,您可以尝试直接在Django代码中模拟它(我担心这会很快给您带来问题):
谢谢你的回答。实际上,我正在测试API,并希望测试返回的JSON。我现在要做的是忽略response.data.pop('created_on',None)测试中的时间戳,谢谢您的回答。实际上,我正在测试API,并希望测试返回的JSON。我现在要做的是忽略response.data.pop('created_on',None)测试中的时间戳
from mock import patch
with patch('django.db.models.fields.datetime') as datetime:
datetime.date.today.return_value = fixed_date
# your testing code