在factory_boy中更改默认的伪造者语言环境 [英] Change default faker locale in factory_boy

查看:139
本文介绍了在factory_boy中更改默认的伪造者语言环境的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何为我的所有工厂在Python的factory_boy中设置默认语言环境?

How can I set the default locale in Python's factory_boy for all of my Factories?

在文档中说,应该使用factory.Faker.override_default_locale进行设置,但这对我的伪造者没有任何作用...

In docs says that one should set it with factory.Faker.override_default_locale but that does nothing to my fakers...

import factory
from app.models import Example
from custom_fakers import CustomFakers

# I use custom fakers, this indeed are added
factory.Faker.add_provider(CustomFakers)
# But not default locales
factory.Faker.override_default_locale('es_ES')

class ExampleFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = Example

    name = factory.Faker('first_name')


>>> from example import ExampleFactory
>>> e1 = ExampleFactory()
>>> e1.name
>>> u'Chad'

推荐答案

这不是一个好的解决方案,但就目前而言,它已经足够好了.您可以更改变量,该变量包含值:

Not a good solution, but for now it's as good as it gets. You can change the variable that holds the value:

import factory
factory.Faker._DEFAULT_LOCALE = 'xx_XX'

此外,您可以创建一个像这样的文件(app/faker.py):

Moreover, you can create a file like this (app/faker.py):

import factory
from faker.providers import BaseProvider

factory.Faker._DEFAULT_LOCALE = 'xx_XX'

def fake(name):
    return factory.Faker(name).generate({})

def faker():
    return factory.Faker._get_faker()

class MyProvider(BaseProvider):
    def category_name(self):
        return self.random_element(category_names)
    ...
factory.Faker.add_provider(MyProvider)

category_names = [...]

然后,一旦导入文件,语言环境就会更改.此外,您还可以得到您的提供者以及在工厂外使用factory_boy伪造者的简便方法:

Then, once you import the file, the locale changes. Also, you get your providers and an easy way to use factory_boy's faker outside of the factories:

from app.faker import f
print(fake('random_int'))
print(faker().random_int())

这篇关于在factory_boy中更改默认的伪造者语言环境的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆