7

多数の単体テスト ファイルがあり、そのすべてが django.test.TestCase クラスで構成されています。

__init__.py ファイルでテスト ファイルのインポートのコメントを解除/コメントするための小さなシェル スクリプトを自分で作成したので、指定したコマンド ライン引数に基づいて、特定のテスト ファイルからテストを実行できます。また、すべてのテスト ファイルのすべてのテストを一度に実行することもできます (回帰テストの目的で)。

いくつかの JSON フィクスチャを含むこの 1 つのテスト ファイルがあり、最初のテストでは、特定のモデル/テーブルに (JSON フィクスチャによって定義された) 3 つのレコードがあることを確認します。

ここに問題があります。このテスト ファイルを単独で実行すると、そのテストは見事に合格しますが、他のすべてのテストと一緒にテストを実行すると、前述の特定のテスト ケースが失敗します。

すべてのテストを実行すると、データベースはテーブル/モデルに 6 つのレコードがあると表示しますが、テスト ファイルを単独で実行するときのように、(フィクスチャから) 3 つだけ存在する必要があります。

また、そのテストファイルを他のいくつかのテストファイル(すべてではない)で実行しようとしましたが、成功しました。したがって、そうでないのは、すべてのテストファイルが実行されるときだけです。

私には、これは Django または PostgreSQL (私が使用している DB) のバグのように思えます。Django TestCases は、テスト クラスは言うまでもなく、各テスト メソッド間でデータベースを自動フラッシュ/リセットすることになっていないからです。

4

1 に答える 1

1

これはおそらく、Django の TestCase と TransactionTestCase の間でクリーンアップが行われる方法の違いによるものです。Django 1.5 以前は、TestCases の後に TransactionTestCases を実行する必要がありました (Django の testunner が実行してくれました)。ただし、これは 1.5 で修正されるはずなので、もう一度テストを実行してみてください...

于 2013-07-03T10:28:30.323 に答える