2016-08-05 28 views
0

Django REST Frameworkアプリの単体テストを書いています。私はfactory_boyを使って私の偽のテストデータを作成しています。私はdjango - factory_boy AttributeError: 'NoneType'オブジェクトに '_meta'属性がありません

File "/Users/thomasheatwole/osf-meetings/meetings/conferences/tests.py", line 69, in setUp 
    contributor = UserFactory() 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/factory/base.py", line 67, in __call__ 
    return cls.create(**kwargs) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/factory/base.py", line 594, in create 
    return cls._generate(True, attrs) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/factory/base.py", line 519, in _generate 
    obj = cls._prepare(create, **attrs) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/factory/base.py", line 494, in _prepare 
    return cls._create(model_class, *args, **kwargs) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/factory/django.py", line 181, in _create 
    return manager.create(*args, **kwargs) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/db/models/manager.py", line 122, in manager_method 
    return getattr(self.get_queryset(), name)(*args, **kwargs) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/db/models/query.py", line 401, in create 
    obj.save(force_insert=True, using=self.db) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/db/models/base.py", line 708, in save 
    force_update=force_update, update_fields=update_fields) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/db/models/base.py", line 745, in save_base 
    update_fields=update_fields, raw=raw, using=using) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 192, in send 
    response = receiver(signal=self, sender=sender, **named) 
File "/Users/thomasheatwole/osf-meetings/meetings/submissions/signals.py", line 19, in add_permissions_on_submission_save 
    submission, submission_contributor, conference_admin, approval) 
File "/Users/thomasheatwole/osf-meetings/meetings/submissions/permissions.py", line 167, in set_unapproved_submission_permissions 
    approval, submission_contributor) 
File "/Users/thomasheatwole/osf-meetings/meetings/approvals/permissions.py", line 62, in add_approval_permissions_to_submission_contributor 
    assign_perm("approvals.delete_approval", submission_contributor, approval) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/guardian/shortcuts.py", line 92, in assign_perm 
    return model.objects.assign_perm(perm, user, obj) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/guardian/managers.py", line 43, in assign_perm 
    obj_perm, created = self.get_or_create(**kwargs) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/db/models/manager.py", line 122, in manager_method 
    return getattr(self.get_queryset(), name)(*args, **kwargs) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/db/models/query.py", line 467, in get_or_create 
    return self._create_object_from_params(lookup, params) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/db/models/query.py", line 499, in _create_object_from_params 
    obj = self.create(**params) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/db/models/query.py", line 401, in create 
    obj.save(force_insert=True, using=self.db) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/guardian/models.py", line 39, in save 
    content_type = ContentType.objects.get_for_model(self.content_object) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/contrib/contenttypes/models.py", line 55, in get_for_model 
    opts = self._get_opts(model, for_concrete_model) 
File "/Users/thomasheatwole/.virtualenvs/django/lib/python2.7/site-packages/django/contrib/contenttypes/models.py", line 32, in _get_opts 
    model = model._meta.concrete_model 
AttributeError: 'NoneType' object has no attribute '_meta' 

私のテストを実行しようとすると、私はかなりのバックエンド構造の私の理解が大きくないので、何が起こっているのか見当もつかない、次のエラーメッセージに遭遇しました。ここの工場です:私はそれらを呼び出すところ

class UserFactory(factory.DjangoModelFactory): 
    class Meta: 
     model = User 

class ConferenceFactory(factory.DjangoModelFactory): 
    class Meta: 
     model = Conference 


class ApprovalFactory(factory.DjangoModelFactory): 
    class Meta: 
     model = approvalModels.Approval 


class SubmissionFactory(factory.DjangoModelFactory): 
    class Meta: 
     model = submissionModels.Submission 

そして、ここです:あなたがエラーメッセージに目を通す場合

def setUp(self): 
    self.user1 = UserFactory(
     username = 'Leo', 
     id = '99' 
     ) 
    self.user2 = UserFactory(
     username = 'LeoLeo' 
     ) 
    self.conference = ConferenceFactory(
     admin = self.user1 
    ) 
    self.submission1 = SubmissionFactory(
     conference = self.conference, 
     contributor = UserFactory() 
     ) 
    self.submission2 = SubmissionFactory(
     conference = self.conference, 
     contributor = UserFactory() 
     ) 

、それは特に簡単に修正がありますなら、私に教えてくださいについてcontributor = UserFactory()

を訴えています、あるいは何が起こっているのかについての何らかの説明も素晴らしいでしょう。

ありがとうございます!

tests.py

+0

私は答えを掲載しました。あなたがまだそれを理解できない場合は、モデル定義も投稿してください。あなたはどのような関係を扱っているのか知っています。 – mariodev

答えて

関連する問題