feat: 新增技能扩展N13一章相关示例源码
This commit is contained in:
42
code/newsletter/N13/tests/conftest.py
Normal file
42
code/newsletter/N13/tests/conftest.py
Normal file
@@ -0,0 +1,42 @@
|
||||
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
|
||||
29
code/newsletter/N13/tests/test_faker.py
Normal file
29
code/newsletter/N13/tests/test_faker.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import pytest
|
||||
|
||||
|
||||
def test_faker_fixture(faker):
|
||||
assert faker.unique.boolean()
|
||||
|
||||
|
||||
def test_faker_chinese_name(faker):
|
||||
import re
|
||||
|
||||
name = faker.name()
|
||||
print(f"name is: {name}")
|
||||
assert re.match(r"[\u4e00-\u9eff]", name)
|
||||
|
||||
|
||||
def test_faker_custom_locale(faker):
|
||||
el = faker.custom_locales()
|
||||
assert el in ["zh-CN", "en-US", "ja-JP", "ko-KR"]
|
||||
|
||||
|
||||
def test_faker_custom_programming_language(faker):
|
||||
el = faker.custom_programming_languages()
|
||||
assert el in ["Python", "Java", "Golang", "JavaScript", "Swift"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("n", argvalues=[1, 10, 100])
|
||||
def test_faker_custom_numbers(faker, n):
|
||||
el = faker.custom_numbers(n=n)
|
||||
assert el in list(range(n))
|
||||
Reference in New Issue
Block a user