43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
import pytest
|
|
from faker import Faker
|
|
from faker.providers import BaseProvider
|
|
|
|
|
|
@pytest.fixture(scope="session", autouse=True)
|
|
def faker_session_locale():
|
|
return "zh-CN"
|
|
|
|
|
|
class MyProvider(BaseProvider):
|
|
def custom_locales(self):
|
|
choices = ["zh-CN", "en-US", "ja-JP", "ko-KR"]
|
|
return self.random_element(choices)
|
|
|
|
def custom_programming_languages(self):
|
|
langs = ["Python", "Java", "Golang", "JavaScript", "Swift"]
|
|
return self.random_element(langs)
|
|
|
|
def custom_numbers(self, n: int = 10):
|
|
if n < 0:
|
|
raise ValueError("n must be greater than or equal to 0.")
|
|
|
|
return self.random_element(list(range(n)))
|
|
|
|
|
|
@pytest.fixture()
|
|
def faker(request):
|
|
if "faker_locale" in request.fixturenames:
|
|
locale = request.getfixturevalue("faker_locale")
|
|
fake = Faker(locale=locale)
|
|
else:
|
|
fake = request.getfixturevalue("_session_faker")
|
|
|
|
seed = 0
|
|
if "faker_seed" in request.fixturenames:
|
|
seed = request.getfixturevalue("faker_seed")
|
|
fake.seed_instance(seed=seed)
|
|
fake.unique.clear()
|
|
|
|
fake.add_provider(MyProvider)
|
|
return fake
|