test_discriminator_pydantic_v2() — fastapi Function Reference
Architecture documentation for the test_discriminator_pydantic_v2() function in test_union_body_discriminator.py from the fastapi codebase.
Entity Profile
Dependency Diagram
graph TD e31bc680_496a_2d95_67f7_97ceff78c63f["test_discriminator_pydantic_v2()"] b7547d18_a665_12ea_3e49_b878c6e6d305["test_union_body_discriminator.py"] e31bc680_496a_2d95_67f7_97ceff78c63f -->|defined in| b7547d18_a665_12ea_3e49_b878c6e6d305 style e31bc680_496a_2d95_67f7_97ceff78c63f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
tests/test_union_body_discriminator.py lines 10–176
def test_discriminator_pydantic_v2() -> None:
from pydantic import Tag
app = FastAPI()
class FirstItem(BaseModel):
value: Literal["first"]
price: int
class OtherItem(BaseModel):
value: Literal["other"]
price: float
Item = Annotated[
Union[Annotated[FirstItem, Tag("first")], Annotated[OtherItem, Tag("other")]],
Field(discriminator="value"),
]
@app.post("/items/")
def save_union_body_discriminator(
item: Item, q: Annotated[str, Field(description="Query string")]
) -> dict[str, Any]:
return {"item": item}
client = TestClient(app)
response = client.post("/items/?q=first", json={"value": "first", "price": 100})
assert response.status_code == 200, response.text
assert response.json() == {"item": {"value": "first", "price": 100}}
response = client.post("/items/?q=other", json={"value": "other", "price": 100.5})
assert response.status_code == 200, response.text
assert response.json() == {"item": {"value": "other", "price": 100.5}}
response = client.get("/openapi.json")
assert response.status_code == 200, response.text
assert response.json() == snapshot(
{
"openapi": "3.1.0",
"info": {"title": "FastAPI", "version": "0.1.0"},
"paths": {
"/items/": {
"post": {
"summary": "Save Union Body Discriminator",
"operationId": "save_union_body_discriminator_items__post",
"parameters": [
{
"name": "q",
"in": "query",
"required": True,
"schema": {
"type": "string",
"description": "Query string",
"title": "Q",
},
}
],
"requestBody": {
"required": True,
"content": {
"application/json": {
"schema": {
"oneOf": [
{"$ref": "#/components/schemas/FirstItem"},
{"$ref": "#/components/schemas/OtherItem"},
],
"discriminator": {
"propertyName": "value",
"mapping": {
"first": "#/components/schemas/FirstItem",
"other": "#/components/schemas/OtherItem",
},
},
"title": "Item",
}
}
},
},
"responses": {
"200": {
"description": "Successful Response",
"content": {
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does test_discriminator_pydantic_v2() do?
test_discriminator_pydantic_v2() is a function in the fastapi codebase, defined in tests/test_union_body_discriminator.py.
Where is test_discriminator_pydantic_v2() defined?
test_discriminator_pydantic_v2() is defined in tests/test_union_body_discriminator.py at line 10.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free