使用Factory Boy伪造JSONField

时间:2017-08-29 12:47:54

标签: django unit-testing django-models factory-boy django-jsonfield

我的模型中有一个带有JSONField Type(MYSQL实现)的字段。我想使用FactoryBoy Faker伪造这个字段的数据。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以通过创建一个返回dict而不是单个字符串的函数来解决此问题,data是User模型中的JSONField。您也可以在PostgreSql JSONField中使用相同的代码,它也会在模型字段中返回一个dict。

import factory


def sequence(number):
   """
   :param number:
   :return: a dict that contains random data
   """
   return {
       'email': 'example{0}@foo.com'.format(number),
       'username': 'username{0}'.format(number),
   }


class UserFactory(factory.django.DjangoModelFactory):
    data = factory.Sequence(sequence)

    class Meta:
        model = 'users.User'