2017-08-18 11 views
0

私はDjangoアプリケーションに奇妙なバグを発見しました。 /people/<pk>にアクセス可能なビューがあります。テストではうまく動作しますが、実際にはいくつかのバグ(ちょうど少数!)のバグを見つけました:Reverse for 'single-person' with arguments '('',)' not found. 1 pattern(s) tried: ['people/(\\d+)/?$']私はテストでそれを捕まえられなかったので、データベースの現在の状態をデバッグするために別のテストを作成したいと思います。また、このような将来の事態を防ぐため、実際のデータに何か問題が生じる可能性を最小限に抑えるため、本番データベースのコピーを使ってテストを実行することができます。フィクスチャを使用して運用データベースからテストを作成できますか?

私は、しかし、この試みが失敗したことが

manage.py dumdata --output db-test.json 

、その後

ほど簡単だろうと思った:

====================================================================== 
ERROR: setUpClass (people.tests.test_my_data.TestPeopleWithMyData) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/Users/username/Documents/python_projects/project/venv/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py", line 178, in __get__ 
    rel_obj = getattr(instance, self.cache_name) 
AttributeError: 'Person' object has no attribute '_added_by_cache' 

(私は私のPersonadded_byという名前のフィールドを持っていますモデル)。それからそれはdjango.contrib.auth.models.DoesNotExist: Problem installing fixture '/Users/username/Documents/python_projects/project/db-test.json': User matching query does not exist.

私はこの正確にデータベースがうまく機能していることを知っているので、私には正しく見えません。この問題をデバッグする前に、私がやっていることが根本的に間違っているかどうかを理解したいと思います。そのようなテストフィクスチャを作成することはできません。または、私は簡単な間違いを逃していますか?

答えて

0

私はあなたが「_added_by_cache」あなたのモデルではないことを持って、あなたのフィクスチャファイルでテスト

python manage.py makemigrations 
python manage.py migrate 

を実行する前に行う必要があると思います。

関連する問題