2012-05-18 70 views
0

我是python和django的新手,我無法弄清楚我在這裏做錯了什麼。在tests.py中測試失敗,但在python shell中成功

我有一個網站對象:

class Site (models.Model): 
    domain = models.CharField(max_length=30) 
    support_status = models.CharField(max_length=20, choices= SITE_SUPPORTED_STATUS, blank=False) 
    requests = models.IntegerField() 
    objects = SiteManager() 
    def __unicode__(self): 
     return u'%s %s' % (self.domain, self.support_status) 

而一個SiteManager對象

class SiteManager(models.Manager): 
    def supported_site_counts(self): 
     i = self.filter(support_status__iexact="SUPPORTED").count() 
     return i 

從控制檯,方法 「supported_site_counts()」 的作品就好了

>>(InteractiveConsole) 
>>> from bookmark.models import Site, SiteManager 
>>> Site.objects.supported_site_counts() 
>>>>2012-05-18 18:09:20,027 DEBUG (0.001) SELECT COUNT(*) FROM "bookmark_site" WHERE 
>>>>"bookmark_site"."support_status" LIKE SUPPORTED ESCAPE '\' ; args=(u'SUPPORTED',) 
>>>>2012-05-18 18:09:20,028 DEBUG Got 1 supported site 
>>>>1 

但當它從測試用例中調用時,計數返回爲0

class SiteManagerTest(unittest.TestCase): 
    def test_supported_site_counts(self): 
     self.x = False 
     self.count = Site.objects.supported_site_counts() 
     logging.debug(self.count) 

回答

0

這可能是因爲測試將設置與您的開發數據庫分開運行測試的數據庫。您需要將測試數據以編程方式或使用fixtures放入測試數據庫。

相關問題