无法从factoryBoy类创建对象

0 投票
2 回答
54 浏览
提问于 2025-04-14 16:58

我试着创建一个类,并用这个类来生成一些实例,但在我的 Django 终端里却无法创建任何实例。

factories.py

import factory
from webshare.models import WebShareFileFolders


class WebShareFileFactoryBoy(factory.django.DjangoModelFactory):
    class Meta:
        model = WebShareFileFolders

    inode = factory.Sequence(lambda n: n)
    name = factory.Faker('name')
    path = factory.Faker('text', max_nb_chars=50)
    is_dir = factory.Faker('boolean')

然后我在控制台看到的错误信息是:

>>> from webshare.tests.factories import WebShareFileFactoryBoy

>>> instance = WebShareFileFactoryBoy()
Traceback (most recent call last):
  File "C:\Python37\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
TypeError: 'module' object is not callable

>>> instance = WebShareFileFactoryBoy.create()
Traceback (most recent call last):
  File "C:\Python37\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
AttributeError: module 'webshare.tests.factories.WebShareFileFactoryBoy' has no attribute 'create'

谢谢你的帮助;)

Python 版本 3.7.9

factory-boy 版本 3.3.0

我只是想从一个工厂类创建实例。

编辑:解决办法是导入的方法。

from webshare.tests.factories.WebShareFileFactoryBoy import WebShareFileFactoryBoy factories 是一个文件夹,而这个 Python 文件的名字和类名是一样的。

2 个回答

0

使用下面的代码。


import factory
from ...webshare.models import WebShareFileFolders


class WebShareFileFactoryBoy(factory.django.DjangoModelFactory):
    class Meta:
        model = WebShareFileFolders

    inode = factory.Sequence(lambda n: n)
    name = factory.Faker('name')
    path = factory.Faker('text', max_nb_chars=50)
    is_dir = factory.Faker('boolean') 

0

我在导入类的时候犯了个错误。

问题是:

from webshare.tests.factories import WebShareFileFactoryBoy

解决办法是:

from webshare.tests.factories.WebShareFileFactoryBoy import WebShareFileFactoryBoy

这里的 factories 是一个文件夹,而这个 Python 文件的名字和类名是一样的。

第二种解决办法是:

init.py 文件里添加:

from .WebShareFileFactoryBoy import WebShareFileFactoryBoy

撰写回答