2017-08-19 65 views
0

如何在Python的factory_boy中爲我的所有工廠設置默認語言環境?在factory_boy中更改默認的faker語言環境

在文檔中說,一個人應該有factory.Faker.override_default_locale設置,但什麼都不做我的僞裝者...

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' 

回答

1

Faker.override_default_locale()是上下文管理器,雖然它不是從文檔非常清晰。

這意味着你應該使用在你的代碼的形式之一:

with factory.Faker.override_default_locale('es_ES'): 
    ExampleFactory() 

或者:

@factory.Faker.override_default_locale('es_ES') 
def test_foo(self): 
    user = ExampleFactory() 
1

我有同樣的問題,因爲你的。對於臨時解決方案,請嘗試在factory.Faker中傳遞區域設置。

例如:

name = factory.Faker('first_name', locale='es_ES') 
+0

啊,我知道,但不是我想要做的:(開發者該項目不太敏感,這一天也沒有:( – Alan