Вот веб-приложение fastapi. У меня возникли проблемы с тестом.
post
в crud.py :
async def post(payload: BookSchema):
query = books.insert().values(book=payload.book, author=payload.author,
create_time=payload.create_time, update_time=payload.update_time)
return await database.execute(query=query)
create_book
:
@router.post("/book", response_model=BookDB, status_code=201)
async def create_book(payload: BookSchema):
book_id = await crud.post(payload)
response_object = {
"id": book_id,
**payload.dict()
}
return response_object
conftest.py :
import pytest
from starlette.testclient import TestClient
from app.main import app
@pytest.fixture()
def test_app():
with TestClient(app) as client:
yield client
Я использую pytest для проверки своего случая:
def test_create_book_invalid_json(test_app):
response = test_app.post(API_PREFIX + "/book", data=json.dumps({"book": "smart"}))
print(f"response.status_code is {response.status_code}")
assert response.status_code == 422
Ожидаемый код_состояния должен быть 422
, и я получил 201
. Я пытаюсь напечатать response.status_code
, и вывод будет 422
.
test_books.py::test_create_book_invalid_json FAILED [100%]response.status_code is 422
test_books.py:20 (test_create_book_invalid_json)
201 != 422
Expected :422
Actual :201