You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Factory Boy报错:无法生成抽象工厂UserFactory实例求助

解决Factory Boy中Cannot generate instances of abstract factory错误

错误信息

factory.errors.FactoryError: Cannot generate instances of abstract factory UserFactory; Ensure UserFactory.Meta.model is set and UserFactory.Meta.abstract is either not set or False.

问题根源

你的UserFactory代码存在两个关键问题:

  • Meta类模型赋值错误:用了类型注解符号:而非赋值符号=,导致Factory Boy无法识别关联的Users模型。
  • abstract属性位置错误且不必要:abstract = True写在了Meta类外部,且你需要生成具体实例,完全不需要将工厂设为抽象类型(抽象工厂仅用于被其他工厂继承,不能直接生成实例)。

修复后的UserFactory代码

import factory
import factory.django
from users.models import Users
from django.contrib.auth.hashers import make_password

class UserFactory(factory.django.DjangoModelFactory):
    username = factory.Sequence(lambda n: f"user_{n:004}")
    email = factory.LazyAttribute(lambda user: f"{user.username}@example.com")
    password = factory.LazyFunction(make_password("password"))

    class Meta:
        model = Users  # 改为赋值符号=,正确关联模型

验证

修改后,在测试代码中调用UserFactory()即可正常生成Users实例,不会再触发抽象工厂相关错误。

内容的提问来源于stack exchange,提问作者Wael Elsafty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:45:53