From 586903246161273d467d4d4b87fb1a500f086bcd Mon Sep 17 00:00:00 2001 From: Yurii Motov Date: Wed, 5 Nov 2025 13:30:41 +0100 Subject: [PATCH] Update tests after applying a bugfix --- tests/test_aliases/test_file_field_aliases.py | 72 ++++++++----------- tests/test_aliases/test_form_field_aliases.py | 40 ++++++----- tests/test_aliases/test_form_model_aliases.py | 16 +++-- 3 files changed, 62 insertions(+), 66 deletions(-) diff --git a/tests/test_aliases/test_file_field_aliases.py b/tests/test_aliases/test_file_field_aliases.py index f08cd0a55..9b7361525 100644 --- a/tests/test_aliases/test_file_field_aliases.py +++ b/tests/test_aliases/test_file_field_aliases.py @@ -14,7 +14,6 @@ app = FastAPI() # ===================================================================================== # File(alias=...) # Current situation: Works, but schema is wrong -# Optional[List[bytes]] fails due to another issue (likely not related to aliases) # ------------------------------ # required field @@ -166,20 +165,12 @@ def test_optional_list_field_alias_by_name(): assert resp.json() == {"file_sizes": None} -@pytest.mark.xfail( - reason="Optional[List[bytes]] File type causes TypeError in FastAPI", - raises=TypeError, - strict=False, -) def test_optional_list_field_alias_by_alias(): client = TestClient(app) resp = client.post( "/optional-list-field-alias", files=[("files_alias", b"content1"), ("files_alias", b"content2")], ) - # Currently fails due to some issue (likely unrelated to aliases) with: - # TypeError: issubclass() arg 1 must be a class - assert resp.json() == {"file_sizes": [8, 8]} @@ -205,7 +196,6 @@ def test_optional_list_field_alias_schema(): # ===================================================================================== # File(validation_alias=...) # Current situation: schema is correct, but doesn't work (parameter name is used) -# Optional[List[bytes]] fails due to another issue (likely not related to aliases) # ------------------------------ @@ -229,9 +219,10 @@ def test_required_field_validation_alias_by_name(): # Currently fails due to issue with aliases: # AssertionError: assert 200 == 422 - detail = resp.json()["detail"] - assert detail[0]["msg"] == "Field required" - assert "file_val_alias" in detail[0]["loc"] + # Uncomment when the assertion above passes: + # detail = resp.json()["detail"] + # assert detail[0]["msg"] == "Field required" + # assert "file_val_alias" in detail[0]["loc"] @pytest.mark.xfail(raises=AssertionError, strict=False) @@ -244,7 +235,8 @@ def test_required_field_validation_alias_by_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 422 == 200 - assert resp.json() == {"file_size": 7} + # Uncomment when the assertion above passes: + # assert resp.json() == {"file_size": 7} def test_required_field_validation_alias_schema(): @@ -331,9 +323,10 @@ def test_list_field_validation_alias_by_name(): # Currently fails due to issue with aliases: # AssertionError: assert 200 == 422 - detail = resp.json()["detail"] - assert detail[0]["msg"] == "Field required" - assert "files_val_alias" in detail[0]["loc"] + # Uncomment when the assertion above passes: + # detail = resp.json()["detail"] + # assert detail[0]["msg"] == "Field required" + # assert "files_val_alias" in detail[0]["loc"] @pytest.mark.xfail(raises=AssertionError, strict=False) @@ -347,7 +340,8 @@ def test_list_field_validation_alias_by_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 422 == 200 - assert resp.json() == {"file_sizes": [8, 8]} + # Uncomment when the assertion above passes: + # assert resp.json() == {"file_sizes": [8, 8]} def test_list_field_validation_alias_schema(): @@ -378,22 +372,16 @@ async def optional_list_field_validation_alias( return {"file_sizes": [len(file) for file in files]} -@pytest.mark.xfail( - reason="Optional[List[bytes]] File type causes TypeError in FastAPI", - raises=TypeError, - strict=False, -) +@pytest.mark.xfail(raises=AssertionError, strict=False) def test_optional_list_field_validation_alias_by_name(): client = TestClient(app) resp = client.post( "/optional-list-field-validation-alias", files=[("files", b"content1"), ("files", b"content2")], ) - # Currently fails due to some issue (likely unrelated to aliases) with: - # TypeError: issubclass() arg 1 must be a class assert resp.json() == {"file_sizes": None} - # Will likely fail due to issue with aliases with: + # Currently fails due to issue with aliases: # AssertionError: assert {'file_sizes': [8, 8]} == {'file_sizes': None} @@ -428,7 +416,6 @@ def test_optional_list_field_validation_alias_schema(): # ===================================================================================== # File(alias=..., validation_alias=...) # Current situation: Schema is correct (validation_alias), but doesn't work (alias is used) -# Optional[List[bytes]] fails due to another issue (likely not related to aliases) # ------------------------------ # required field @@ -468,9 +455,10 @@ def test_required_field_alias_and_validation_alias_by_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 200 == 422 - detail = resp.json()["detail"] - assert detail[0]["msg"] == "Field required" - assert "file_val_alias" in detail[0]["loc"] + # Uncomment when the assertion above passes: + # detail = resp.json()["detail"] + # assert detail[0]["msg"] == "Field required" + # assert "file_val_alias" in detail[0]["loc"] @pytest.mark.xfail(raises=AssertionError, strict=False) @@ -484,7 +472,8 @@ def test_required_field_alias_and_validation_alias_by_validation_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 422 == 200 - assert resp.json() == {"file_size": 7} + # Uncomment when the assertion above passes: + # assert resp.json() == {"file_size": 7} def test_required_field_alias_and_validation_alias_schema(): @@ -606,9 +595,10 @@ def test_list_field_alias_and_validation_alias_by_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 200 == 422 - detail = resp.json()["detail"] - assert detail[0]["msg"] == "Field required" - assert "files_val_alias" in detail[0]["loc"] + # Uncomment when the assertion above passes: + # detail = resp.json()["detail"] + # assert detail[0]["msg"] == "Field required" + # assert "files_val_alias" in detail[0]["loc"] @pytest.mark.xfail(raises=AssertionError, strict=False) @@ -622,7 +612,8 @@ def test_list_field_alias_and_validation_alias_by_validation_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 422 == 200 - assert resp.json() == {"file_sizes": [8, 8]} + # Uncomment when the assertion above passes: + # assert resp.json() == {"file_sizes": [8, 8]} def test_list_field_alias_and_validation_alias_schema(): @@ -667,23 +658,16 @@ def test_optional_list_field_alias_and_validation_alias_by_name(): assert resp.json() == {"file_sizes": None} -@pytest.mark.xfail( - reason="Optional[List[bytes]] File type causes TypeError in FastAPI", - raises=TypeError, - strict=False, -) +@pytest.mark.xfail(raises=AssertionError, strict=False) def test_optional_list_field_alias_and_validation_alias_by_alias(): client = TestClient(app) resp = client.post( "/optional-list-field-alias-and-validation-alias", files=[("files_alias", b"content1"), ("files_alias", b"content2")], ) - # Currently fails due to some issue (likely unrelated to aliases) with: - # TypeError: issubclass() arg 1 must be a class - assert resp.status_code == 200 assert resp.json() == {"file_sizes": None} - # Will likely fail due to issue with aliases: + # Currently fails due to issue with aliases: # AssertionError: assert {'file_sizes': [8, 8]} == {'file_sizes': None} diff --git a/tests/test_aliases/test_form_field_aliases.py b/tests/test_aliases/test_form_field_aliases.py index 860d398ac..dd28e0542 100644 --- a/tests/test_aliases/test_form_field_aliases.py +++ b/tests/test_aliases/test_form_field_aliases.py @@ -204,9 +204,10 @@ def test_required_field_validation_alias_by_name(): # Currently fails due to issue with aliases: # AssertionError: assert 200 == 422 - detail = resp.json()["detail"] - assert detail[0]["msg"] == "Field required" - assert "param_val_alias" in detail[0]["loc"] + # Uncomment when the assertion above passes: + # detail = resp.json()["detail"] + # assert detail[0]["msg"] == "Field required" + # assert "param_val_alias" in detail[0]["loc"] @pytest.mark.xfail(raises=AssertionError, strict=False) @@ -219,7 +220,8 @@ def test_required_field_validation_alias_by_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 422 == 200 - assert resp.json() == {"param": "123"} + # Uncomment when the assertion above passes: + # assert resp.json() == {"param": "123"} def test_required_field_validation_alias_schema(): @@ -298,9 +300,10 @@ def test_list_field_validation_alias_by_name(): # Currently fails due to issue with aliases: # AssertionError: assert 200 == 422 - detail = resp.json()["detail"] - assert detail[0]["msg"] == "Field required" - assert "param_val_alias" in detail[0]["loc"] + # Uncomment when the assertion above passes: + # detail = resp.json()["detail"] + # assert detail[0]["msg"] == "Field required" + # assert "param_val_alias" in detail[0]["loc"] @pytest.mark.xfail(raises=AssertionError, strict=False) @@ -313,7 +316,8 @@ def test_list_field_validation_alias_by_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 422 == 200 - assert resp.json() == {"param": ["123", "456"]} + # Uncomment when the assertion above passes: + # assert resp.json() == {"param": ["123", "456"]} def test_list_field_validation_alias_schema(): @@ -422,9 +426,10 @@ def test_required_field_alias_and_validation_alias_by_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 200 == 422 - detail = resp.json()["detail"] - assert detail[0]["msg"] == "Field required" - assert "param_val_alias" in detail[0]["loc"] + # Uncomment when the assertion above passes: + # detail = resp.json()["detail"] + # assert detail[0]["msg"] == "Field required" + # assert "param_val_alias" in detail[0]["loc"] @pytest.mark.xfail(raises=AssertionError, strict=False) @@ -437,7 +442,8 @@ def test_required_field_alias_and_validation_alias_by_validation_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 422 == 200 - assert resp.json() == {"param": "123"} + # Uncomment when the assertion above passes: + # assert resp.json() == {"param": "123"} def test_required_field_alias_and_validation_alias_schema(): @@ -550,9 +556,10 @@ def test_list_field_alias_and_validation_alias_by_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 200 == 422 - detail = resp.json()["detail"] - assert detail[0]["msg"] == "Field required" - assert "param_val_alias" in detail[0]["loc"] + # Uncomment when the assertion above passes: + # detail = resp.json()["detail"] + # assert detail[0]["msg"] == "Field required" + # assert "param_val_alias" in detail[0]["loc"] @pytest.mark.xfail(raises=AssertionError, strict=False) @@ -566,7 +573,8 @@ def test_list_field_alias_and_validation_alias_by_validation_alias(): # Currently fails due to issue with aliases: # AssertionError: assert 422 == 200 - assert resp.json() == {"param": ["123", "456"]} + # Uncomment when the assertion above passes: + # assert resp.json() == {"param": ["123", "456"]} def test_list_field_alias_and_validation_alias_schema(): diff --git a/tests/test_aliases/test_form_model_aliases.py b/tests/test_aliases/test_form_model_aliases.py index 583b5f01d..5da78f309 100644 --- a/tests/test_aliases/test_form_model_aliases.py +++ b/tests/test_aliases/test_form_model_aliases.py @@ -284,7 +284,7 @@ class ListFieldValidationAliasModel(BaseModel): async def list_field_validation_alias_model( data: ListFieldValidationAliasModel = Form(...), ): - return {"param": data.param} + return {"param": data.param} # pragma: no cover (remove `no cover` when bug fixed) def test_list_field_validation_alias_model_by_name(): @@ -309,7 +309,8 @@ def test_list_field_validation_alias_model_by_alias(): # AssertionError: assert 422 == 200 # {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]} - assert resp.json() == {"param": ["123", "456"]} + # Uncomment when the assertion above passes: + # assert resp.json() == {"param": ["123", "456"]} def test_list_field_validation_alias_model_schema(): @@ -363,7 +364,8 @@ def test_optional_list_field_validation_alias_model_by_alias(): # AssertionError: assert 422 == 200 # {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]} - assert resp.json() == {"param": ["123", "456"]} + # Uncomment when the assertion above passes: + # assert resp.json() == {"param": ["123", "456"]} def test_optional_list_field_validation_alias_model_schema(): @@ -519,7 +521,7 @@ class ListFieldAliasAndValidationAliasModel(BaseModel): async def list_field_alias_and_validation_alias_model( data: ListFieldAliasAndValidationAliasModel = Form(...), ): - return {"param": data.param} + return {"param": data.param} # pragma: no cover (remove `no cover` when bug fixed) def test_list_field_alias_and_validation_alias_model_by_name(): @@ -557,7 +559,8 @@ def test_list_field_alias_and_validation_alias_model_by_validation_alias(): # AssertionError: assert 422 == 200 # {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]} - assert resp.json() == {"param": ["123", "456"]} + # Uncomment when the assertion above passes: + # assert resp.json() == {"param": ["123", "456"]} def test_list_field_alias_and_validation_alias_model_schema(): @@ -626,7 +629,8 @@ def test_optional_list_field_alias_and_validation_alias_model_by_validation_alia # AssertionError: assert 422 == 200 # {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]} - assert resp.json() == {"param": ["123", "456"]} + # Uncomment when the assertion above passes: + # assert resp.json() == {"param": ["123", "456"]} def test_optional_list_field_alias_and_validation_alias_model_schema():