小编emi*_*der的帖子

FactoryBoy为SubFactory的属性赋值属性

在FactoryBoy中定义ModelFactory时,我需要访问SubFactory创建的另一个模型的属性,并将其分配给此ModelFactory的属性.

这就是我想要做的:

import factory
class MyModelFactory(factory.DjangoModelFactory):
    FACTORY_FOR = MyModel

    created_by = factory.SubFactory(AdminUserFactory)**.id**
Run Code Online (Sandbox Code Playgroud)

显然这不起作用,因为没有AdminUser对象来访问MyModelFactory类定义中的id.

这就是我所做的,但它很难看:

import factory
class MyModelFactory(factory.DjangoModelFactory):
    FACTORY_FOR = MyModel

    dummy_created_by = factory.SubFactory(AdminUserFactory)
    created_by = factory.LazyAttribute(lambda o: o.dummy_created_by.id)

    @classmethod
    def _create(cls, target_class, *args, **kwargs):
        del kwargs['dummy_created_by']
        return super(MyModelFactory, cls)._created(
            target_class, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我试图通读Factory_Boy文档,但没有看到允许我懒惰地访问该属性的类或函数.有没有人有什么建议?

python django unit-testing factory-boy

6
推荐指数
3
解决办法
2014
查看次数

标签 统计

django ×1

factory-boy ×1

python ×1

unit-testing ×1