2017-01-27 4 views
0

管理パネルでユーザービューのアクセス許可をテストするためのカスタムページツリーを生成しようとしています。Wagtailユニットテストで使用するテストフィクスチャを生成する正しい方法は何ですか?

./manage.py dumpdata --natural-foreign --natural-primary --indent 4 > test.json 

となるようにテストケースで治具を使用して:私は、次のコマンドでファイルにフィクスチャを投棄しています。このテストを実行

class MyTest(TestCase, WagtailTestUtils): 

    fixtures = ['test.json'] 

    def test_my_code(self): 
     # More code.... 

次のエラーが返されます。

File "/Users/jchau/.pyenv/versions/2.7.8/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 323, in execute 
return Database.Cursor.execute(self, query, params) 
DeserializationError: Problem installing fixture '/Users/jchau/Documents/wagtail/wagtail/tests/testapp/fixtures/test_group_restrictions.json': no such table: auth_user 

テストデータの形式が正しくないようです。 Wagtailで使用するカスタムテストフィクスチャを生成するための方法はありますか?

注:これらのコマンドは、Wagtail 1.8のバニラインストールに対して実行されています。私はカスタムモデルやデータ型を作成していないか、または何らかの変更を加えていないので、既存のデータだけがサイトとページで構成されています。

答えて

0

しかし、Wagtailのテスト環境はa custom user modelを使用するように設定されているため、標準のUserモデルのインストールで作成されたフィクスチャは互換性がありません。

二つのモデルの簡単な比較から、次のように手動で固定具に「auth.user」レコードを編集することが可能です: `「モデル」に

  • 変更"model": "auth.user":「customuserを。 customuser」
  • "date_joined"フィールド
  • がフィールド"country""attachment"の追加と削除。これらは空の文字列に設定することができます
+0

これはauth_userテーブルでエラーを修正したようですが、UNIQUE制約がwagtailcore_page.pathに失敗する問題があります。他のモデルとの違いはありますか?または、auth_userテーブルは唯一のテーブルですか? – jeffreyckchau

+0

カスタムユーザーテーブルは、データベースのレベルで標準ではないテストセットアップ内の唯一のものだと私は信じています。ページパスで何が失敗するかわからない - それについて新しい質問を開く価値がある。 (あなたのフィクスチャがページレコード上に一意でない 'パス'フィールドを含んでいれば、何かが間違って作成されてしまった...) – gasman

+0

私は実際には最初のデータ移行の1つと衝突していると考えました。私はそれ以来、リポジトリに、テスト中にマイグレーションを無効にしたり、最初のページ/サイトのデータを削除したりして、djangoの 'dumpdata'コマンドから独自のフィクスチャを使うことができるという問題を開いた – jeffreyckchau

関連する問題