現在の安定したdjango_nose(0.1.3)では、モデルが適切に検出およびロードされていないため、テストを実行すると次の例外が発生します。
django.db.utils.DatabaseError: (1146, "Table 'test_appdatabase.django_site' doesn't exist")
gitバージョンのdjango_noseを使用して、モデルをテストデータベースに適切に作成することができましたが、モデルはすべて空です。Djangoのテストランナーを使用すると、django_siteテーブルやauth_permissionテーブルなどの基本データがテーブルに読み込まれます。
django_site
id domain name
1 example.com example.com
django_noseをインストールしてセットアップした状態でテストスイートを実行すると、次の例外が発生します。
DoesNotExist: Site matching query does not exist.
何か案は?
更新:-v 2で実行すると、アプリケーションの同期後ハンドラー(syncdb)が実行されているようです
Running post-sync handlers for application sites
Creating example.com Site object
Adding content type 'sites | site'
Adding permission 'sites | site | Can add site'
Adding permission 'sites | site | Can change site'
Adding permission 'sites | site | Can delete site'
したがって、それらを追加しているように見えますが、どこかで削除されています。
さらなる更新:
MySQLクエリログを見ると、イベントのシーケンスは次のとおりです。
- テストデータベースでsyncdbを実行します
- すべてのテーブルを切り捨てます(なぜですか?これが私の問題です)
- テストを実行します
クエリログからの切り捨ての例:
TRUNCATE `django_site`
テーブルが切り捨てられるのはなぜですか?テストがお互いを汚染しないようにするためですか、それを無効にする方法はありますか?
私はこれが最終的な更新であると信じています:
標準のジャンゴランナーを使用すると、同じことが起こります、
- テーブルが作成されます
- post-syncはデータを挿入します
- テーブルは切り捨てられます
- AUTO_INCREMENT=1を設定するために呼び出されたテーブルを変更します
次のステップを除いて:
データが挿入されます
INSERT INTO
django_site
(domain
、name
)VALUES('example.com'、'example.com')
なぜこれがここで起こっているのかわからないが、django_noseでは起こっていない