Django模型在单元测试中失败,但不在shell中

时间:2012-10-10 16:11:15

标签: django

我正在对我的新Django代码进行测试。我有以下型号:

class Places(models.Model):
    name = models.CharField(max_length=20)
    street = models.CharField(max_length=50)
    number = models.IntegerField()
    confirmed = models.BooleanField()
    notes = models.TextField()

    def __unicode__(self):
        return self.address

    class Meta:
        db_table = "Places" # to prevent the prefixes from being added on

当我在manage.py shell中执行此操作时,我得到了正确的响应:

from my_app.models import Places

Places.objects.get(name='home').confirmed

>>> True

当在我的应用程序中使用unittest(manage.py test myapp)执行相同的代码时,我收到错误:

Places matching query does not exist django

当我尝试使用PDB时,我发现Django正在读取数据库为空(空集)而不是存储任何数据。

我也在代码中尝试过RAW SQL,但也失败了,但在shell中工作。

我在sql本身检查了数据库并且数据存在。我执行了等效的SQL代码,它也返回True。

这是Django中的错误吗?

1 个答案:

答案 0 :(得分:4)

总是对新的空数据库执行单元测试。您是否在测试的设置步骤中创建了数据,或者提供了数据夹具?