【问题标题】:Django models fail in unittest, but not in shellDjango 模型在单元测试中失败,但在 shell 中没有
【发布时间】:2012-10-10 16:11:15
【问题描述】:

我正在对我的新 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 中的错误吗?

【问题讨论】:

  • 请打印Places.objects.filter(name='home').count()的结果
  • 它是 0 。 RAW SQL 也没有显示任何内容,这一定是 django “看到”数据库及其中的信息的问题

标签: django


【解决方案1】:

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

【讨论】:

  • 我只是在你打字的时候发现了这一点......是的:)
猜你喜欢
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多