test(backend): rend la configuration de test independante du poste
APP_ENV, APP_DEBUG, APP_LOG_LEVEL et APP_CORS_ORIGINS n'etaient poses nulle part : le .env du developpeur les decidait, alors que les tests assertent en dur l'environnement et que create_app coupe /openapi.json hors developpement. Un poste portant APP_ENV=prod faisait tomber deux tests. Fixe aussi asyncio_default_fixture_loop_scope, que pytest-asyncio 1.4 reclame.
This commit is contained in:
@@ -79,6 +79,7 @@ disallow_untyped_defs = false
|
|||||||
[tool.pytest.ini_options]
|
[tool.pytest.ini_options]
|
||||||
testpaths = ["tests"]
|
testpaths = ["tests"]
|
||||||
asyncio_mode = "auto"
|
asyncio_mode = "auto"
|
||||||
|
asyncio_default_fixture_loop_scope = "function"
|
||||||
addopts = "-q --strict-markers -m 'not integration' --cov=app --cov-report=term-missing"
|
addopts = "-q --strict-markers -m 'not integration' --cov=app --cov-report=term-missing"
|
||||||
markers = ["integration: requiert une base PostgreSQL joignable, hors `make test`"]
|
markers = ["integration: requiert une base PostgreSQL joignable, hors `make test`"]
|
||||||
|
|
||||||
|
|||||||
@@ -10,9 +10,19 @@ from app.db.session import get_engine, get_session_factory
|
|||||||
from app.main import create_app
|
from app.main import create_app
|
||||||
|
|
||||||
|
|
||||||
|
# Piege : les variables d'environnement priment sur apps/backend/.env. Celles qu'on ne
|
||||||
|
# pose pas ici, c'est le .env du poste qui les decide, et les assertions avec.
|
||||||
@pytest.fixture(autouse=True, scope="session")
|
@pytest.fixture(autouse=True, scope="session")
|
||||||
def environment() -> Iterator[None]:
|
def environment() -> Iterator[None]:
|
||||||
os.environ.setdefault("APP_SECRET_KEY", "secret-de-test")
|
os.environ.update(
|
||||||
|
{
|
||||||
|
"APP_ENV": "local",
|
||||||
|
"APP_DEBUG": "false",
|
||||||
|
"APP_LOG_LEVEL": "WARNING",
|
||||||
|
"APP_CORS_ORIGINS": "",
|
||||||
|
"APP_SECRET_KEY": "secret-de-test",
|
||||||
|
}
|
||||||
|
)
|
||||||
os.environ.setdefault(
|
os.environ.setdefault(
|
||||||
"DATABASE_URL", "postgresql+asyncpg://enervision:change_me@localhost:5433/enervision_test"
|
"DATABASE_URL", "postgresql+asyncpg://enervision:change_me@localhost:5433/enervision_test"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user