【发布时间】:2018-04-04 13:56:30
【问题描述】:
我正在尝试编写 Django 测试。我收到此错误:
.../lib/python3.5/site-packages/factory/django.py”,第 118 行,在 _get_manager manager = model_class.objects AttributeError: type object 'MyClassView' has no attribute 'objects'
这是在尝试设置它以进行测试时失败的 setUp 方法(和导入)。 (产生错误的代码运行)
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()
这是我的模型:
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()
这是我的工厂类:
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))
我的其他工厂似乎工作正常,但 MyClassViewFactory 不行。我相信它与
有关choice_objects = MyClassViewManager1()
我已经阅读了有关 factory_boy 自定义管理器的文档 http://factoryboy.readthedocs.io/en/latest/recipes.html#custom-manager-methods,但它只有一个示例,我不确定这是否是我的问题。 (现在花了几天时间)
提前感谢您的帮助。
【问题讨论】:
-
您使用的是什么版本的 factory_boy?检查它似乎确实处理异常的源代码.. github.com/FactoryBoy/factory_boy/blob/master/factory/…
-
factory_boy==2.5.2
-
版本 2.5.2 的日期为 2015 年 4 月。最新版本是 2.9.2,并且在
objects不存在时使用 Django 模型的_default_manager。
标签: django django-models django-testing factory-boy