我正在尝试在下面创建一个测试,我收到了这条消息:
TypeError:'datetime.datetime'对象不可调用
就行了:self.stock.expiry_date(昨天)
测试
def test_stock_passed_expiration(self):
"""
'True' returned when stock is passed it's expiration date.
"""
yesterday = date.today()-timedelta(days=1)
self.stock.expiry_date(yesterday)
self.assertEqual(self.stock.has_expried(), True)
型号:
class Stock(models.Model):
product = models.ForeignKey(Product, related_name="stocks")
expiry_date = models.DateTimeField(default=timezone.now)
def has_expried(self):
if timezone.now > self.expiry_date:
return True
return False
答案 0 :(得分:2)
你有
self.stock.expiry_date(yesterday)
但意味着
self.stock.expiry_date = yesterday
您试图将self.stock.expiry_date
(日期时间对象)视为一个函数,导致该错误消息。
答案 1 :(得分:1)
在测试函数中,您调用expiry_date就好像它是一个函数一样。相反,将self.expiry_date属性设置为昨天,保存模型,您的测试应该有效。
def test_stock_passed_expiration(self):
"""
'True' returned when stock is passed it's expiration date.
"""
yesterday = date.today()-timedelta(days=1)
self.stock.expiry_date = yesterday
self.stock.save()
self.assertEqual(self.stock.has_expried(), True)
答案 2 :(得分:1)
使用
self.stock.expiry_date = yesterday
self.stock.save()
或
self.stock.set(expiry_date=yesterday).save()
相反会帮助你