Browse Source

Add tests for `docs_src.dependencies.tutorial008` (skipped for annotated version)

pull/14569/head
Yurii Motov 7 months ago
parent
commit
2b9d85a61a
  1. 1
      pyproject.toml
  2. 57
      tests/test_tutorial/test_dependencies/test_tutorial008.py

1
pyproject.toml

@ -201,6 +201,7 @@ dynamic_context = "test_function"
omit = [
"docs_src/response_model/tutorial003_04_py39.py",
"docs_src/response_model/tutorial003_04_py310.py",
"docs_src/dependencies/tutorial008_an_py39.py",
]
[tool.coverage.report]

57
tests/test_tutorial/test_dependencies/test_tutorial008.py

@ -0,0 +1,57 @@
import importlib
from types import ModuleType
from typing import Annotated, Any
from unittest.mock import Mock, patch
import pytest
from fastapi import Depends, FastAPI
from fastapi.testclient import TestClient
@pytest.fixture(
name="module",
params=[
"tutorial008_py39",
# "tutorial008_an_py39" # Fails with `NameError: name 'DepA' is not defined`
],
)
def get_module(request: pytest.FixtureRequest):
mod_name = f"docs_src.dependencies.{request.param}"
mod = importlib.import_module(mod_name)
return mod
def test_get_db(module: ModuleType):
app = FastAPI()
@app.get("/")
def read_root(c: Annotated[Any, Depends(module.dependency_c)]):
return {"c": str(c)}
client = TestClient(app)
a_mock = Mock()
b_mock = Mock()
c_mock = Mock()
with (
patch(
f"{module.__name__}.generate_dep_a",
return_value=a_mock,
create=True,
),
patch(
f"{module.__name__}.generate_dep_b",
return_value=b_mock,
create=True,
),
patch(
f"{module.__name__}.generate_dep_c",
return_value=c_mock,
create=True,
),
):
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"c": str(c_mock)}
Loading…
Cancel
Save