1

フィクスチャをロードしていないように見える TestCase があります。

テスト データベースの構築中に次のエラーが表示されます。

No fixtures found.  
.............................................Problem installing fixture '/Users/Bryan/work/CNPROG/forum/fixtures/forum_fixtures.json': Traceback (most recent call last):  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/commands/loaddata.py", line 169, in handle  
    obj.save(using=using)  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/serializers/base.py", line 165, in save  
    models.Model.save_base(self.object, using=using, raw=True)  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/models/base.py", line 543, in save_base  
    created=(not record_exists), raw=raw)  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/dispatch/dispatcher.py", line 162, in send  
    response = receiver(signal=self, sender=sender, **named)  
  File "/Users/Bryan/work/CNPROG/forum/models.py", line 656, in record_ask_event  
    activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ASK_QUESTION)  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/models/fields/related.py", line 302, in __get__  
    rel_obj = QuerySet(self.field.rel.to).using(db).get(**params)  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/models/query.py", line 341, in get  
    % self.model._meta.object_name)  
DoesNotExist: User matching query does not exist.  



class UserProfileTestCases(TestCase):  
    """These are tests to verify that refactoring of UserProfile is correct"""  
    fixtures = ['forum_fixtures.json'] # apparently this needs to be in fixtures/ directory.  
    def setUp(self):  
        self.client = Client()  
        if self.client.login(username='DickCheney', password='test'):   
            print "client.login DickCheney successful";    
        else:   
            print "client.login FAILED"  

何らかの理由でフィクスチャがロードされていません。

フィクスチャは次の場所にあります:
forum/fixtures/forum_fixtures.json

フィクスチャがロードされていない理由を出力するにはどうすればよいですか?

トレースバックは、ここで何かが起こっていることを示唆しています:
file "/Users/Bryan/work/CNPROG/forum/models.py", line 656, in record_ask_event

しかし、それがフィクスチャの読み込みに影響する理由は想像できません。コードを見てみると、post_save イベント経由で record_ask_events が呼び出されています。
うまく設定できたmanage.py loaddata forum_fixturesので、正しく設定できたと思います。

4

3 に答える 3

1

このコマンドでより詳細なテストを実行します: python manage.py test --verbosity=2

フィクスチャの順序を再配置することでこれを修正しました。

関連オブジェクトがある場合は、保存中に関連オブジェクトが呼び出される可能性があるため、関連付けが最も多いオブジェクト ( auth_user など) がフィクスチャの最初にリストされていることを確認する必要があります。

Django v1.2 は「initial_data」という名前のフィクスチャのみを探しました。「forum_fixtures.json」の検索は一度もありませんでした

フィクスチャ名を「initial_data.json」に変更したところ、機能するようになりました。

于 2010-05-26T15:15:08.370 に答える
0

私はこの正確な問題を抱えています。私のアプリは、設定ファイルの INSTALLED_APPS タプルに含まれています。したがって、djangoのドキュメントによると、アプリディレクトリの下のフィクスチャディレクトリで、TestCaseクラスの「フィクスチャ」属性に配置したファイル名を検索する必要があります。うまくいきません。単体テストを実行するときにのみ使用したいので、フィクスチャに「initial_data.json」という名前を付けたくありません。

于 2010-08-25T23:25:40.450 に答える
0

「生」の kwarg を尊重するように、post_save シグナル ハンドラーを変更する必要があります。次のようなことを行った場合、シグナルハンドラーはフィクスチャのロード中にエラーを引き起こしません。

@receiver(post_save, sender=MyModel, dispatch_uid='MyModelUID')
def handler(sender, *args, **kwargs):
    if kwargs.get('raw'):
        return
    else:
        ...stuff
于 2011-10-04T03:23:15.873 に答える