Modern QA2026Data Validation Patterns — tiles
Log inJoin
5 / 80 · 12 Programming for QA · Python Essentials for QA← prev⊞ allnext →☰ Read as one page

1.5Data Validation Patterns

import json
from datetime import datetime

def test_user_response_structure(api_client, base_url):
    r = api_client.get(f"{base_url}/users/me")
    user = r.json()

    # Required fields exist
    required_fields = {"id", "name", "email", "created_at", "role"}
    assert required_fields.issubset(user.keys()), f"Missing: {required_fields - user.keys()}"

    # Sensitive fields absent
    assert "password" not in user
    assert "password_hash" not in user

    # Type validation
    assert isinstance(user["id"], int)
    assert isinstance(user["name"], str)
    assert len(user["name"]) > 0

    # Date format validation
    datetime.fromisoformat(user["created_at"])  # Raises if invalid

    # Enum validation
    assert user["role"] in {"admin", "editor", "viewer"}