2017-10-23 13 views
0

장고 테스트를 작성하려고합니다. 이 오류가 발생합니다 :factory_boy에는 'objects'속성이 없습니다.

.../lib/python3.5/site-packages/factory/django.py", line 118, in _get_manager manager = model_class.objects AttributeError: type object 'MyClassView' has no attribute 'objects'

다음은 테스트 용으로 설정할 때 실패하는 setUp 메소드 (및 가져 오기)입니다.

from factory.django import DjangoModelFactory 
import factory.fuzzy 
import factory 
from app_name import models 
from faker import Factory as FakerFactory 
faker = FakerFactory.create() 

class MyClassViewFactory(DjangoModelFactory): 
    class Meta: 
     model = models.MyClassView 
    state = 'WI' 
    division = 'OP' 
    name = factory.LazyAttribute(lambda x: faker.text(max_nb_chars=40)) 

내 다른 공장

괜찮 제대로 작동하지만 다음은
class MyClassView(models.Model): 
    state = models.CharField('State', max_length=2, null=True) 
    division = models.CharField('Division', max_length=2, null=True) 
    name = models.CharField('Name', max_length=40, null=True) 
    choice_objects = MyClassViewManager1() 

내 공장 클래스입니다 : 여기
import django 
django.setup() 
from app_name.tests.app_name_factory import MyClassViewFactory 
from app_name import models 

class Test_MyClassView(TestCase): 
    def setUp(self): 
     self.MyClassView = MyClassViewFactory() 

내 모델 (코드 실행은 오류 발생) MyClassViewFactory는 그렇지 않습니다. 나는

내가 factory_boy에 사용자 정의 관리자를위한 문서 http://factoryboy.readthedocs.io/en/latest/recipes.html#custom-manager-methods을 읽은
choice_objects = MyClassViewManager1() 

관련이 생각하지만, 그것은 단지 하나의 예를 가지고 있으며, 그조차 내 문제의 경우 내가 확실 해요. (지금 며칠을 보냈습니다)

도움을 주셔서 감사합니다.

objects = models.Manager() 

이 어쨌든, 진행에 허용 :

+1

어떤 factory_boy 버전을 사용하고 있습니까? 소스 코드를 확인하면 예외를 처리하는 것 같습니다. https://github.com/FactoryBoy/factory_boy/blob/master/factory/django.py#L118 – AndrewS

+0

factory_boy == 2.5.2 –

+0

버전 2.5.2가 사용되었습니다. 2015 년 4 월. 가장 최신 버전은 2.9.2이고'objects'가 없을 때 Django 모델의'_default_manager'를 사용합니다. – AndrewS

답변

0

내 문제는 내 models.py 모델 MyClassViewFactory가 추가 라인이 필요하다고했다!