Browse Source

Corrections added for compatibility with Pydantic v1: tests/test_tutorial/test_path/params/test_tutorial002.py

pull/13476/head
alv2017 2 months ago
parent
commit
299e79deea
  1. 20
      tests/test_tutorial/test_path_params/test_tutorial002.py

20
tests/test_tutorial/test_path_params/test_tutorial002.py

@ -2,6 +2,7 @@ import pytest
from fastapi.testclient import TestClient from fastapi.testclient import TestClient
from docs_src.path_params.tutorial002 import app from docs_src.path_params.tutorial002 import app
from tests.utils import PYDANTIC_V2
@pytest.fixture(name="client") @pytest.fixture(name="client")
@ -17,12 +18,23 @@ def test_with_integer_parameters(client, parameter_value):
assert response.json() == {"item_id": parameter} assert response.json() == {"item_id": parameter}
@pytest.mark.xfail(PYDANTIC_V2, reason="Validation bug in Pydantic v2")
@pytest.mark.parametrize("parameter_value", [-10.00, 0.00, 10.00]) @pytest.mark.parametrize("parameter_value", [-10.00, 0.00, 10.00])
def test_with_integers_converted_to_floats(client, parameter_value): def test_with_integers_converted_to_floats(client, parameter_value):
parameter: float = parameter_value parameter: float = parameter_value
response = client.get(f"/items/{parameter}") response = client.get(f"/items/{parameter}")
assert response.status_code == 200 assert response.status_code == 422
assert response.json() == {"item_id": int(parameter)} if PYDANTIC_V2:
assert response.json() == {
"detail": [
{
"type": "int_parsing",
"loc": ["path", "item_id"],
"msg": "Input should be a valid integer, unable to parse string as an integer",
"input": f"{parameter}",
}
]
}
@pytest.mark.parametrize("parameter_value", [-3.14, 3.14]) @pytest.mark.parametrize("parameter_value", [-3.14, 3.14])
@ -30,6 +42,7 @@ def test_with_float_parameters(client, parameter_value):
parameter: float = parameter_value parameter: float = parameter_value
response = client.get(f"/items/{parameter}") response = client.get(f"/items/{parameter}")
assert response.status_code == 422 assert response.status_code == 422
if PYDANTIC_V2:
assert response.json() == { assert response.json() == {
"detail": [ "detail": [
{ {
@ -47,6 +60,7 @@ def test_with_string_parameters(client, parameter_value):
parameter: str = parameter_value parameter: str = parameter_value
response = client.get(f"/items/{parameter}") response = client.get(f"/items/{parameter}")
assert response.status_code == 422 assert response.status_code == 422
if PYDANTIC_V2:
assert response.json() == { assert response.json() == {
"detail": [ "detail": [
{ {
@ -66,6 +80,7 @@ def test_with_list_parameters(client, parameter_value):
parameter: list = parameter_value parameter: list = parameter_value
response = client.get(f"/items/{parameter}") response = client.get(f"/items/{parameter}")
assert response.status_code == 422 assert response.status_code == 422
if PYDANTIC_V2:
assert response.json() == { assert response.json() == {
"detail": [ "detail": [
{ {
@ -81,6 +96,7 @@ def test_with_list_parameters(client, parameter_value):
def test_openapi_schema(client): def test_openapi_schema(client):
response = client.get("/openapi.json") response = client.get("/openapi.json")
assert response.status_code == 200 assert response.status_code == 200
if PYDANTIC_V2:
assert response.json() == { assert response.json() == {
"openapi": "3.1.0", "openapi": "3.1.0",
"info": {"title": "FastAPI", "version": "0.1.0"}, "info": {"title": "FastAPI", "version": "0.1.0"},

Loading…
Cancel
Save