0

我是 python 和 django 的新手,我不知道我在这里做错了什么。

我有一个站点对象:

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)
4

1 回答 1

0

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

于 2012-05-18T23:38:03.270 回答