prefer-pydantic-model-assertion
Compare a Pydantic model or an explicit field projection instead of consecutive property assertions.
Why
Consecutive assertions on the same model scatter one expected record across statements and obscure which fields form the test's contract.
Fix
Prefer 'assert result == ExpectedModel(...)' for the complete contract, or 'assert result.model_dump(include={...}) == {...}' for an intentional subset. Keep any needed None guard. Preserve identity, approximate comparisons, custom serialization and private-attribute semantics; do not fill irrelevant fields or use model_construct/model_copy to bypass validation.
Examples
from pydantic import BaseModel
class User(BaseModel): id: int name: str
def test_user(result: User): assert result.id == 1 assert result.name == "Alice"from pydantic import BaseModel
class User(BaseModel): id: int name: str
def test_user(result: User): assert result.model_dump(include={"id", "name"}) == {"id": 1, "name": "Alice"}