4

django アプリケーションをカバーする一連のテスト ケースを作成しようとしています。テストの一部を実行するには、定義済みのデータベース データが必要です。そこで、フィクスチャを使用することにしました。

私がしたことは次のとおりです: 1) フィクスチャ ファイルを作成しました: oleg$ python manage.py dumpdata goserver > Fixture1.json 2) アプリケーションが存在するディレクトリにフィクスチャを配置しました oleg$ cp Fixture1.json goserver/ 3) テクスチャ名を書き留めます私のアプリケーションのテストファイル

   class GoserverTestCase(TestCase):
    fixtures = ['fixture1.json']

    def setUp(self):
        pass

    def testUserIsAdded(self):
        print "Users" , User.objects.all()
        #print ActiveList.objects.all()
        self.assertEquals(True, True)

4) 次のコマンドでテキスト ケースを実行します: oleg$ python manage.py test --verbosity=2 goserver

テスト実行の出力は (その一部) です。

'/Users/oleg/jin/goclub/trunk/jin/../jin/register/fixtures' で xml フィクスチャ 'initial_data' を試しています... '/Users/oleg/jin/goclub/ に xml フィクスチャ 'initial_data' がありませんトランク/ジン/../ジン/レジスタ/備品'. json フィクスチャ 'initial_data' の '/Users/oleg/jin/goclub/trunk/jin/../jin/register/fixtures' を試しています... '/Users/oleg/jin/goclub/ に json フィクスチャ 'initial_data' がありませんトランク/ジン/../ジン/レジスタ/備品'. '/Users/oleg/jin/goclub/trunk/jin/../jin/captcha/fixtures' のフィクスチャをチェックしています... '/Users/oleg/jin/goclub/trunk/jin/../jin/captcha を試していますxml フィクスチャ 'initial_data' の /fixtures'... '/Users/oleg/jin/goclub/trunk/jin/../jin/captcha/fixtures' に xml フィクスチャ 'initial_data' がありません。'/Users/oleg/jin/goclub/trunk/jin/.. を試しています。json フィクスチャ 'initial_data' の /jin/captcha/fixtures'... '/Users/oleg/jin/goclub/trunk/jin/../jin/captcha/fixtures' に json フィクスチャ 'initial_data' がありません。「/Users/oleg/jin/goclub/trunk/jin/../jin/goserver/fixtures」でフィクスチャを確認しています...「/Users/oleg/jin/goclub/trunk/jin/../jin/goserver」を試していますxml フィクスチャ 'initial_data' の /fixtures'... '/Users/oleg/jin/goclub/trunk/jin/../jin/goserver/fixtures' に xml フィクスチャ 'initial_data' がありません。json フィクスチャ 'initial_data' の '/Users/oleg/jin/goclub/trunk/jin/../jin/goserver/fixtures' を試しています... '/Users/oleg/jin/goclub/ に json フィクスチャ 'initial_data' がありませんトランク/ジン/../ジン/goserver/フィクスチャ'. フィクスチャの '/' をチェックしています... xml フィクスチャ 'initial_data' の '/' を試行しています... '/' に xml フィクスチャ 'initial_data' がありません。json フィクスチャ 'initial_data' の '/' を試行しています... '/' に json フィクスチャ 'initial_data' がありません。フィクスチャの 'U' をチェックしています... xml フィクスチャ 'initial_data' の 'U' を試行しています... 'U' に xml フィクスチャ 'initial_data' がありません。json フィクスチャ 'initial_data' の 'U' を試行しています... 'U' に json フィクスチャ 'initial_data' がありません。フィクスチャの 's' をチェックしています... xml フィクスチャ 'initial_data' の 's' を試行しています... 's' に xml フィクスチャ 'initial_data' がありません。JSONフィクスチャ「initial_data」の「s」を試しています.. フィクスチャの 'U' をチェックしています... xml フィクスチャ 'initial_data' の 'U' を試行しています... 'U' に xml フィクスチャ 'initial_data' がありません。json フィクスチャ 'initial_data' の 'U' を試行しています... 'U' に json フィクスチャ 'initial_data' がありません。フィクスチャの 's' をチェックしています... xml フィクスチャ 'initial_data' の 's' を試行しています... 's' に xml フィクスチャ 'initial_data' がありません。JSONフィクスチャ「initial_data」の「s」を試しています.. フィクスチャの 'U' をチェックしています... xml フィクスチャ 'initial_data' の 'U' を試行しています... 'U' に xml フィクスチャ 'initial_data' がありません。json フィクスチャ 'initial_data' の 'U' を試行しています... 'U' に json フィクスチャ 'initial_data' がありません。フィクスチャの 's' をチェックしています... xml フィクスチャ 'initial_data' の 's' を試行しています... 's' に xml フィクスチャ 'initial_data' がありません。JSONフィクスチャ「initial_data」の「s」を試しています.. xml フィクスチャ 'initial_data' の場合... 's' に xml フィクスチャ 'initial_data' がありません。JSONフィクスチャ「initial_data」の「s」を試しています.. xml フィクスチャ 'initial_data' の場合... 's' に xml フィクスチャ 'initial_data' がありません。JSONフィクスチャ「initial_data」の「s」を試しています..

実際の問題は、フィクスチャがまったく見つからなかったため、テスト データベースに追加したかったデータが追加されなかったことです。問題を解決する方法を教えてください

私はそれを行う新しい方法を試みました。完全なデータベースのダンプを作成し、アプリケーション フォルダーに配置しました。

しかし、いくつかのエンコーディングの問題に遭遇しました。

エラー応答を確認してください:

ファイル "build/bdist.macosx-10.3-i386/egg/MySQLdb/cursors.py"、168 行目、実行中の場合は self._defer_warnings: self._warning_check() ファイル "build/bdist.macosx-10.3-i386/egg /MySQLdb/cursors.py"、82 行目、_warning_check warn(w[-1], self.Warning, 3) ファイル "/opt/local/lib/python2.5/warnings.py"、62 行目、warn globals) ファイル "/opt/local/lib/python2.5/warnings.py"、102 行目、warn_explicit で警告メッセージが発生: 列の文字列値が正しくありません: '\xD0\x9D\xD0\xB0 \xD0...'行 1 の「object_repr」

testUserIsAdded (jin.goserver.tests.GoserverTestCase) ... ユーザー []

別の問題があります。フィクスチャを無効にすると、まだエラーが発生します。

単体テスト コード カバレッジの結果

トレースバック (最新の呼び出しが最後): ファイル "manage.py"、11 行目、execute_manager(settings) ファイル "/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5. Egg /django/core/management/ init .py」、execute_manager utility.execute() ファイルの 340 行目「/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5. Egg /django/core/management/ init .py」、295 行目、実行中の self.fetch_command(subcommand).run_from_argv(self.argv) ファイル「/opt/local/lib/python2.5/site-packages/Django- 1.0.2_final-py2.5.egg/django/core/management/base.py"、192 行目、run_from_argv self.execute(*args, ** options.dict) ファイル "/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py"、219 行目、実行中の output = self. handle(*args, **options) ファイル "/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/commands/test.py" 、33 行目、ハンドル障害 = test_runner(test_labels、verbosity=verbosity、interactive=interactive) ファイル "/opt/local/lib/python2.5/site-packages/django_test_coverage-0.1-py2.5.egg/django-test -coverage/runner.py"、58 行目、run_tests modules.extend(_package_modules(*pkg)) ファイル "/opt/local/lib/python2.5/site-packages/django_test_coverage-0.1-py2.5.egg/ django-test-coverage/runner.py"、92 行目、_package_modules modules.append( import(impstr + '.' + name, {}, {}, [''])) ファイル "/Users/oleg/jin/goclub/trunk/jin/goserver/admin.py"、11 行目、admin.site .register(ActiveList, ActiveListAdmin) ファイル "/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/contrib/admin/sites.py"、64 行目、 in register raise AlreadyRegistered('The model %s is already registered' % model. name ) django.contrib.admin.sites.AlreadyRegistered: モデル ActiveList は既に登録されています

4

1 に答える 1

2

フィクスチャ ファイルをどこに置くかという最初の質問: 各アプリにフィクスチャというフォルダを作成し、そこにフィクスチャ データを配置します。

整合性エラーに関する 2 番目の問題については、コンテンツ タイプとフィクスチャの問題に関する次のディスカッションを参照してください。

Django でフィクスチャをロードするときの contenttypes の問題

于 2009-09-06T18:01:27.010 に答える