簡體   English   中英

Django測試對象不可調用

[英]Django test object is not callable

我正在嘗試在下面創建測試,並且收到以下消息:

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

你有

self.stock.expiry_date(yesterday)

但意味着

self.stock.expiry_date = yesterday

您嘗試將self.stock.expiry_date (日期時間對象)視為函數,從而導致該錯誤消息。

在您的測試函數中,您正在調用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)

運用

self.stock.expiry_date = yesterday
self.stock.save()

要么

self.stock.set(expiry_date=yesterday).save()

相反會幫助你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM