如何在 Python Factory boy 中为我的所有工厂设置默认区域设置?
在文档中说应该设置它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'
The 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()
对于所有测试(Django):
# settings.py
TEST_RUNNER = 'myproject.testing.MyTestRunner'
# myproject/testing.py
import factory
from django.conf import settings
from django.util import translation
import django.test.runner
class MyTestRunner(django.test.runner.DiscoverRunner):
def run_tests(self, test_labels, extra_tests=None, **kwargs):
with factory.Faker.override_default_locale(translation.to_locale(settings.LANGUAGE_CODE)):
return super().run_tests(test_labels, extra_tests=extra_tests, **kwargs)
更多相关内容here https://github.com/FactoryBoy/factory_boy/issues/407#issuecomment-754281399.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)