Djangoユニット-試験荷重をかけ備品は数依存の用途の問題
-
22-09-2019 - |
質問
後ほど現在決定しているユ試験のためには、既存のコードです。っていないときは、次の問題:
実行後、syncdb作成の試験データベース、Django自動的に充填複数のテーブルのようなdjango_content_typeはauth_permissions.
その想いを実行する必要があ複雑な試験のようにチェックのユーザー登録が必要lof otデータテーブルを接続します。
ば私た既存のデータベースのための器具(いく暖かく、ぬくもりのある生活を私にとっても、エラーのように こちらの.こうなるので、Djangoが入力されていテーブルのようなdjango_content_type.
次に可能な方法は、django dumpdata--excludeのオプションのために優れていsyncdbます。これがうまくできないものになった場合にはユーザーやユーザオブジェクトからdbユーザーの権限テーブル、自動的に作成したsyncdb、私の受信誤りで、主キーの接続となり、現在このように差しが間違っている。このような こちらの 一部'具地獄"はさておき、液示がdoensn悪い)
ることが可能となり制度見は次:
- ん試験Djangoの作成の試験データベース、syncdbが作成されます。
- 私の試験設定のい落としこのデータベース"になり、新しい空のデータベースです。
- 負荷データのダンプカーから既存のデータベースまたは試験設定
解決
それは問題が解決した方法は次のとおりです。
syncdbの実行後に私は自分のコードからアクセスシェルにos.system
を使用するテストのセットアップ一部で、テスト・データベースを作成しました。その後、私はちょうど私がテスト用に使用するデータベースのダンプをロードしています。
このようなこの作品そう:syncdbの実行塗りつぶしたContentTypeとデータといくつかの他のテーブル。その後、SQLダンプをロードテストのセットアップ一部のすべての以前に作成したデータをクリアし、私は素敵なデータベースを取得します。
)=最善の解決策ではないこと、それが動作する可能性があります。
他のヒント
私のアプローチは、(すべてで助けていませんが、素敵です)簡単なDB移行を作るために最初に使用南になり、その後、モデル作成方法のモジュールを使用することになります。
あなたが実行すると、
$ manage.py test my_proj
南とDjangoはテストDBを作成し、あなたに完全に更新されたテスト用DBを与えるために、すべてのマイグレーションを実行してインストールします。
ここにあなたのオブジェクトを作成する関数を作成するには、は、書き込みテストするには、最初のpythonモジュールのcalle、test_model_factory.pyを作成します。
def mk_user():
User.objects.create(...)
次に、あなたのテストであなたのtest_model_factoryモジュールをインポートすることができ、それぞれのテストのためのオブジェクトを作成します。
def test_something(self):
test_user = test_model_factory.mk_user()
self.assert(test_user ...)