2

Django1.4を持っています。test.pyには、必要なTestCaseインポートがあります。

from django.test import TestCase

問題を特定するために、次の行を追加しました。

fixtures = ['westeros']

デフォルトのサンプルテストケース、すなわち

class SimpleTest(TestCase):
    fixtures = ['westeros']

    def test_basic_addition(self):
        """
        Tests that 1 + 1 always equals 2.
        """
        self.assertEqual(1 + 1, 2)

django-admin.py dumpdataを使用して、customers/fixturesディレクトリに「westeros」というフィクスチャファイルを作成しました。「customers」はsettings.INSTALLED_APPSにリストされているアプリです。

テストを実行すると、冗長性を問わず、Djangoはフィクスチャを無視してtest_basic_additionテストに合格します。エラーなし、フィクスチャのロードなし。TestCaseのインポートがないかのようです。何が間違っている可能性があるか、またはこれをデバッグする方法についてのアイデアはありますか?

4

2 に答える 2

2

行ったように定義するときは、拡張子を省略してfixturesもかまいません。

fixtures = ['westeros']

ただし、フィクスチャファイル自体には、そのシリアライザに対応する拡張子が必要です。たとえばwesteros.json、jsonの場合は、それぞれzip形式のjsonまたはxmlですwesteros.json.zipwesteros.xml

于 2012-08-08T22:35:57.673 に答える
1

ファイルはどこにありますwesterosか?

fixturesアプリ内のディレクトリか、ファイルで指定されたディレクトリにあるFIXTURE_DIRS必要settings.pyがあります

でテストを実行しverbosity=2て、完全な出力を取得できます。 https://docs.djangoproject.com/en/1.0/ref/django-admin/#test

フィクスチャファイルの名前はwesteros?またはそれはファイル拡張子を持っていますか?

ご覧のとおり、Djangoはフィクスチャのロードでサイレントに失敗します。(少なくとも1.3までは、新しい1.4バージョンではまだフィクスチャを使用していません)。ただし、フィクスチャがロードされているかどうかを実際にテストしているわけではありません。aまたはsomethignをスローしてself.assertGreater(YourModel.objects.all(), 0)オブジェクトがないことを確認するか、debbugerをドロップして、いくつかのモデルのクエリを開始します。

于 2012-08-08T20:50:47.840 に答える