1
from fastapi import FastAPI
2
from fastapi.testclient import TestClient
3
from pydantic import BaseModel
6
class Model1(BaseModel):
11
class Model2(BaseModel):
16
class Model3(BaseModel):
27
response_model=Model2,
28
response_model_include={"baz": ..., "ref": {"foo"}},
32
ref=Model1(foo="simple_include model foo", bar="simple_include model bar"),
33
baz="simple_include model2 baz",
38
"/simple_include_dict",
39
response_model=Model2,
40
response_model_include={"baz": ..., "ref": {"foo"}},
42
def simple_include_dict():
45
"foo": "simple_include_dict model foo",
46
"bar": "simple_include_dict model bar",
48
"baz": "simple_include_dict model2 baz",
54
response_model=Model2,
55
response_model_exclude={"ref": {"bar"}},
59
ref=Model1(foo="simple_exclude model foo", bar="simple_exclude model bar"),
60
baz="simple_exclude model2 baz",
65
"/simple_exclude_dict",
66
response_model=Model2,
67
response_model_exclude={"ref": {"bar"}},
69
def simple_exclude_dict():
72
"foo": "simple_exclude_dict model foo",
73
"bar": "simple_exclude_dict model bar",
75
"baz": "simple_exclude_dict model2 baz",
81
response_model=Model3,
82
response_model_include={"ref2", "name"},
83
response_model_exclude={"ref2": {"baz"}},
87
name="mixed model3 name",
90
ref=Model1(foo="mixed model foo", bar="mixed model bar"),
91
baz="mixed model2 baz",
98
response_model=Model3,
99
response_model_include={"ref2", "name"},
100
response_model_exclude={"ref2": {"baz"}},
104
"name": "mixed_dict model3 name",
107
"ref": {"foo": "mixed_dict model foo", "bar": "mixed_dict model bar"},
108
"baz": "mixed_dict model2 baz",
113
client = TestClient(app)
116
def test_nested_include_simple():
117
response = client.get("/simple_include")
119
assert response.status_code == 200, response.text
121
assert response.json() == {
122
"baz": "simple_include model2 baz",
123
"ref": {"foo": "simple_include model foo"},
127
def test_nested_include_simple_dict():
128
response = client.get("/simple_include_dict")
130
assert response.status_code == 200, response.text
132
assert response.json() == {
133
"baz": "simple_include_dict model2 baz",
134
"ref": {"foo": "simple_include_dict model foo"},
138
def test_nested_exclude_simple():
139
response = client.get("/simple_exclude")
140
assert response.status_code == 200, response.text
141
assert response.json() == {
142
"baz": "simple_exclude model2 baz",
143
"ref": {"foo": "simple_exclude model foo"},
147
def test_nested_exclude_simple_dict():
148
response = client.get("/simple_exclude_dict")
149
assert response.status_code == 200, response.text
150
assert response.json() == {
151
"baz": "simple_exclude_dict model2 baz",
152
"ref": {"foo": "simple_exclude_dict model foo"},
156
def test_nested_include_mixed():
157
response = client.get("/mixed")
158
assert response.status_code == 200, response.text
159
assert response.json() == {
160
"name": "mixed model3 name",
162
"ref": {"foo": "mixed model foo", "bar": "mixed model bar"},
167
def test_nested_include_mixed_dict():
168
response = client.get("/mixed_dict")
169
assert response.status_code == 200, response.text
170
assert response.json() == {
171
"name": "mixed_dict model3 name",
173
"ref": {"foo": "mixed_dict model foo", "bar": "mixed_dict model bar"},