Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django rest框架APITestCase+;时间戳的assertEqual_Django_Unit Testing_Timestamp_Django Rest Framework - Fatal编程技术网

django rest框架APITestCase+;时间戳的assertEqual

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测试

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

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