committed by
GitHub
2 changed files with 60 additions and 0 deletions
@ -0,0 +1,53 @@ |
|||
from typing import Any |
|||
|
|||
from fastapi import FastAPI |
|||
from fastapi.testclient import TestClient |
|||
from pydantic import BaseModel |
|||
|
|||
|
|||
class PersonBase(BaseModel): |
|||
name: str |
|||
lastname: str |
|||
|
|||
|
|||
class Person(PersonBase): |
|||
@property |
|||
def full_name(self) -> str: |
|||
return f"{self.name} {self.lastname}" |
|||
|
|||
class Config: |
|||
orm_mode = True |
|||
read_with_orm_mode = True |
|||
|
|||
|
|||
class PersonCreate(PersonBase): |
|||
pass |
|||
|
|||
|
|||
class PersonRead(PersonBase): |
|||
full_name: str |
|||
|
|||
class Config: |
|||
orm_mode = True |
|||
|
|||
|
|||
app = FastAPI() |
|||
|
|||
|
|||
@app.post("/people/", response_model=PersonRead) |
|||
def create_person(person: PersonCreate) -> Any: |
|||
db_person = Person.from_orm(person) |
|||
return db_person |
|||
|
|||
|
|||
client = TestClient(app) |
|||
|
|||
|
|||
def test_read_with_orm_mode() -> None: |
|||
person_data = {"name": "Dive", "lastname": "Wilson"} |
|||
response = client.post("/people/", json=person_data) |
|||
data = response.json() |
|||
assert response.status_code == 200, response.text |
|||
assert data["name"] == person_data["name"] |
|||
assert data["lastname"] == person_data["lastname"] |
|||
assert data["full_name"] == person_data["name"] + " " + person_data["lastname"] |
Loading…
Reference in new issue