首页 > 解决方案 > 如何从 SubFactory Django 单元测试中获取值

问题描述

我有三个类。在 OrdFactory 中,我只希望将 id 传递给“sku”字段,而 sku 是整数字段。

class CoFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = models.Co

    name = factory.Sequence(lambda n: 'Co {}'.format(n))

class CrFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = models.Cr

    name = factory.Sequence(lambda n: 'Cr {}'.format(n))

class OrdFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = models.Ord

    sku = random.choice([factory.SubFactory(CrFactory), factory.SubFactory(CoFactory)])
    quantity = 75.6

我收到以下错误。

int() 参数必须是字符串、类似字节的对象或数字,而不是“Co”。

我也尝试过使用 id :-

sku = random.choice([factory.SubFactory(CrFactory).id, factory.SubFactory(CoFactory).id])

但这也会引发错误。

标签: django-rest-frameworkdjango-unittestfactory-boy

解决方案


我已经修复了使用 trait.Overload 也是一种替代解决方案。 https://factoryboy.readthedocs.io/en/latest/reference.html#factory.Trait


推荐阅读