Coverage for tests / test_validation.py: 100%
16 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-06-10 09:40 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-06-10 09:40 +0000
1import pytest 1ijklmnop
2from pydantic.error_wrappers import ValidationError 1ijklmnop
3from sqlmodel import SQLModel 1ijklmnop
6def test_validation_pydantic_v2(clear_sqlmodel): 1ijklmnop
7 """Test validation of implicit and explicit None values.
9 # For consistency with pydantic, validators are not to be called on
10 # arguments that are not explicitly provided.
12 https://github.com/tiangolo/sqlmodel/issues/230
13 https://github.com/samuelcolvin/pydantic/issues/1223
15 """
16 from pydantic import field_validator 1abcdefgh
18 class Hero(SQLModel): 1abcdefgh
19 name: str | None = None 1abcdefgh
20 secret_name: str | None = None 1abcdefgh
21 age: int | None = None 1abcdefgh
23 @field_validator("name", "secret_name", "age") 1abcdefgh
24 def reject_none(cls, v): 1abcdefgh
25 assert v is not None 1abcdefgh
26 return v 1abcdefgh
28 Hero.model_validate({"age": 25}) 1abcdefgh
30 with pytest.raises(ValidationError): 1abcdefgh
31 Hero.model_validate({"name": None, "age": 25}) 1abcdefgh