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