5 changed files with 69 additions and 6 deletions
@ -0,0 +1,10 @@ |
|||
from pydantic import BaseSettings |
|||
|
|||
|
|||
class Settings(BaseSettings): |
|||
app_name: str = "Awesome API" |
|||
admin_email: str |
|||
items_per_user: int = 50 |
|||
|
|||
class Config: |
|||
env_file = ".env" |
|||
@ -0,0 +1,10 @@ |
|||
from pydantic import BaseSettings |
|||
|
|||
|
|||
class Settings(BaseSettings): |
|||
app_name: str = "Awesome API" |
|||
admin_email: str |
|||
items_per_user: int = 50 |
|||
|
|||
class Config: |
|||
env_file = ".env" |
|||
@ -0,0 +1,45 @@ |
|||
import importlib |
|||
from types import ModuleType |
|||
|
|||
import pytest |
|||
from pytest import MonkeyPatch |
|||
|
|||
from ...utils import needs_py39, needs_pydanticv1, needs_pydanticv2 |
|||
|
|||
|
|||
@pytest.fixture( |
|||
name="mod_path", |
|||
params=[ |
|||
pytest.param("app03"), |
|||
pytest.param("app03_an"), |
|||
pytest.param("app03_an_py39", marks=needs_py39), |
|||
], |
|||
) |
|||
def get_mod_path(request: pytest.FixtureRequest): |
|||
mod_path = f"docs_src.settings.{request.param}" |
|||
return mod_path |
|||
|
|||
|
|||
@pytest.fixture(name="main_mod") |
|||
def get_main_mod(mod_path: str) -> ModuleType: |
|||
main_mod = importlib.import_module(f"{mod_path}.main") |
|||
return main_mod |
|||
|
|||
|
|||
@needs_pydanticv2 |
|||
def test_settings(main_mod: ModuleType, monkeypatch: MonkeyPatch): |
|||
monkeypatch.setenv("ADMIN_EMAIL", "[email protected]") |
|||
settings = main_mod.get_settings() |
|||
assert settings.app_name == "Awesome API" |
|||
assert settings.admin_email == "[email protected]" |
|||
assert settings.items_per_user == 50 |
|||
|
|||
|
|||
@needs_pydanticv1 |
|||
def test_settings_pv1(mod_path: str, monkeypatch: MonkeyPatch): |
|||
monkeypatch.setenv("ADMIN_EMAIL", "[email protected]") |
|||
config_mod = importlib.import_module(f"{mod_path}.config_pv1") |
|||
settings = config_mod.Settings() |
|||
assert settings.app_name == "Awesome API" |
|||
assert settings.admin_email == "[email protected]" |
|||
assert settings.items_per_user == 50 |
|||
Loading…
Reference in new issue