在tests.py中测试失败但在python shell中成功

时间:2012-05-18 23:31:15

标签: django-testing

我是python和django的新手,我无法弄清楚我在这里做错了什么。

我有一个Site对象:

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)

1 个答案:

答案 0 :(得分:0)

这可能是因为测试将建立一个独立于开发数据库的数据库来运行测试。您需要以编程方式或使用fixtures将测试数据放入测试数据库。