Unit testing Django模型中的错误测试日期
我正在努力测试一些Django模型,您可以在这里看到相关代码: 型号:Unit testing Django模型中的错误测试日期,unit-testing,date,django-models,Unit Testing,Date,Django Models,我正在努力测试一些Django模型,您可以在这里看到相关代码: 型号: class Check(models.Model): date = models.DateTimeField(auto_now_add=True) ... 正在测试的功能: def get_today_records(model): today = datetime.today() today_records = model.objects.filter( date__yea
class Check(models.Model):
date = models.DateTimeField(auto_now_add=True)
...
正在测试的功能:
def get_today_records(model):
today = datetime.today()
today_records = model.objects.filter(
date__year=today.year,
date__month=today.month,
date__day=today.day)
return today_records
测试文件:
def setUp(self):
self.today_check = models.Check.objects.create(
...
date=datetime.today())
def test_get_today_records(self):
past_check = self.today_check
past_check.date = datetime(2012, 1, 1)
past_check.save()
today_records = get_today_records(models.Check)
self.assertTrue(self.today_check in today_records,
'get_today_records not returning today records')
self.assertTrue(past_check not in today_records,
'get_today_records returnig older records')
错误:
======================================================================
Traceback (most recent call last):
File "C:\..\tests.py", lin
e 32, in test_get_today_records
'get_today_records not returning today records')
AssertionError: get_today_records not returning today records
----------------------------------------------------------------------
Ran 2 tests in 0.018s
FAILED (failures=1)
Destroying test database for alias 'default'...
我对shell进行了一些手动测试,并应用了相同的筛选条件,它返回了我两分钟前刚刚创建的记录。我肯定还缺一件东西
注:我运行此测试的日期是2013/06/1
提前感谢在您的测试函数中,
过去的\u check=self。今天的\u check
并不像您期望的那样创建新记录,它会修改数据库中的现有记录
当您执行pass\u check.save()
时,它会使用过去的更新日期更新数据库中的单个记录
您可能希望在测试中使用以下内容:
past_check = models.Check.objects.create(date=datetime(2012, 1, 1))
而不是:
past_check = self.today_check
past_check.date = datetime(2012, 1, 1)
past_check.save()