Django工厂中FACTORY_FOR在哪里?

1 投票
1 回答
670 浏览
提问于 2025-04-17 14:00

我在一个Django项目中使用Factory Boy,想要在对应的工厂里访问类里面定义的属性。

我的测试案例大概是这样的:

from django.test.testcases import TransactionTestCase
from app.tests.factories import SomeModelFactory

class MyTestCase(TransactionTestCase):   
    def test_something(self):
        ...
        SomeModelFactory.create(
            data_type=SomeModelFactory.FACTORY_FOR.TYPE_STRING)
        ...

我的类里,正如你所想的,确实在合适的位置有那个常量。

class SomeModel(models.Model):
  TYPE_STRING = 2
  ...

而对应的工厂也是按应该的方式定义的。

class SomeModelFactory(factory.Factory):
  FACTORY_FOR = SomeModel
  ...

但是测试案例失败了,提示说FACTORY_FOR不存在。所以我觉得可能是元类把它藏起来了。理想情况下,我希望在使用工厂的时候,尽量减少直接导入模型的需要。

1 个回答

1

SomeModelFactory._associated_class 可能就是你要找的东西...

撰写回答