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 シェルでこれを行うと、正しい応答が得られます。

from my_app.models import Places

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

>>> True

この同じコードがユニットテスト (manage.py test myapp) の下の my アプリで実行されると、次のエラーが表示されます。

Places matching query does not exist django

PDB を試してみたところ、Django がデータベースを空 (空のセット) として読み取っており、データを保存していないことがわかりました。

コードで RAW SQL も試しましたが、これも失敗しましたが、シェルで動作しました。

SQL自体でデータベースを確認したところ、データが存在します。同等の SQL コードを実行したところ、True も返されます。

これは Django のバグですか?

4

1 に答える 1

4

単体テストは、常に新しい空のデータベースに対して実行されます。テストのセットアップ手順でデータを作成しましたか、またはデータ フィクスチャを提供しましたか?

于 2012-10-10T16:21:37.843 に答える