2011-07-29 18 views
0

私のアプリをテストするときに繰り返し問題があります。 tests.pyの中からオブジェクトを変更または作成するたびに、これらの変更はmodels.pyには見つかりません - そしてそれは同じテストの中でが発生しますtests.pyのdjangoの変更がmodels.pyに反映されない

擬似コード:

tests.py: 
def test_something(self): 
    ... 
    Norm.objects.create(...) 
    self.player_a.print_all_norms() 
    ... 


models.py: 
def print_all_norms(): 
    a = Norm.objects.all() 
    print a 
    # prints [], the Norm object created in tests.py wasn't found 
    return 

EDIT: 明確化 - 私はそれを作成したテスト内のオブジェクトを見つけることができません。 normオブジェクトはtest_something()内に作成され、models.py内の関数を呼び出します。 関数がNorm.objects.all()を使用して以前に作成したオブジェクトを検索しようとすると、失敗し、テストが再開し、テストも失敗します。

+0

私はあなたがオブジェクトを.save()しようとすると思うはずです –

+0

create()メソッドは、保存に組み込まれています。 [作成クエリ](https://docs.djangoproject.com/en/1.3/topics/db/queries/)のdocページ(パーマリンク付きなし...)のカップルの場所に記載されているように –

答えて

1

テストではtest database docsに記載されているテンポラリデータベースが使用されるため、テストが完了した後でモデルマネージャでこれらのオブジェクトを見つけることはできません。

テスト中にオブジェクトが見つからないか、テストを実行した後にオブジェクトを見つけようとしていますか?

それはテストでそれを見つけていない場合は、(テスト用DBのドキュメントで述べたように)あなたが適切な権限を持っていることを確認作ってみる

あなたは一貫してのいくつかの並べ替えにデータベースに所定の値をロードしたい場合は、テストの外で、あなたは使用したいかもしれませんfixtures

+0

私は私の質問を編集しました。テスト中にオブジェクトが見つかりません。その特定のテストでは、そのオブジェクトを必要とするだけで、TestCase.setUpの一部として作成するか、またはフィクスチャからロードすると、他のテストでエラーが発生します。私はドキュメントを読んで、私は適切な権限を持っていると信じています。 – Dominik

関連する問題