1

我正在对我的新 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

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

Places matching query does not exist django

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

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

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

这是 Django 中的错误吗?

4

1 回答 1

4

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

于 2012-10-10T16:21:37.843 回答