fastapi

Форк
0
/
test_duplicate_models_openapi.py 
79 строк · 2.1 Кб
1
from fastapi import FastAPI
2
from fastapi.testclient import TestClient
3
from pydantic import BaseModel
4

5
app = FastAPI()
6

7

8
class Model(BaseModel):
9
    pass
10

11

12
class Model2(BaseModel):
13
    a: Model
14

15

16
class Model3(BaseModel):
17
    c: Model
18
    d: Model2
19

20

21
@app.get("/", response_model=Model3)
22
def f():
23
    return {"c": {}, "d": {"a": {}}}
24

25

26
client = TestClient(app)
27

28

29
def test_get_api_route():
30
    response = client.get("/")
31
    assert response.status_code == 200, response.text
32
    assert response.json() == {"c": {}, "d": {"a": {}}}
33

34

35
def test_openapi_schema():
36
    response = client.get("/openapi.json")
37
    assert response.status_code == 200, response.text
38
    assert response.json() == {
39
        "openapi": "3.1.0",
40
        "info": {"title": "FastAPI", "version": "0.1.0"},
41
        "paths": {
42
            "/": {
43
                "get": {
44
                    "summary": "F",
45
                    "operationId": "f__get",
46
                    "responses": {
47
                        "200": {
48
                            "description": "Successful Response",
49
                            "content": {
50
                                "application/json": {
51
                                    "schema": {"$ref": "#/components/schemas/Model3"}
52
                                }
53
                            },
54
                        }
55
                    },
56
                }
57
            }
58
        },
59
        "components": {
60
            "schemas": {
61
                "Model": {"title": "Model", "type": "object", "properties": {}},
62
                "Model2": {
63
                    "title": "Model2",
64
                    "required": ["a"],
65
                    "type": "object",
66
                    "properties": {"a": {"$ref": "#/components/schemas/Model"}},
67
                },
68
                "Model3": {
69
                    "title": "Model3",
70
                    "required": ["c", "d"],
71
                    "type": "object",
72
                    "properties": {
73
                        "c": {"$ref": "#/components/schemas/Model"},
74
                        "d": {"$ref": "#/components/schemas/Model2"},
75
                    },
76
                },
77
            }
78
        },
79
    }
80

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.