Skip to content

Custom Generators

SqlProof maps PostgreSQL types to Hypothesis strategies automatically. For tighter control, override columns via proof.customize().

from hypothesis import strategies as st

proof.customize(
    "products",
    price=st.decimals(min_value="0.01", max_value="9999.99", places=2),
    name=st.text(min_size=1, max_size=100),
)

SqlProof also ships helpers for common string domains:

from sqlproof.generators.well_known import emails, slugs, urls

proof.customize(
    "customers",
    email=emails(),
)

proof.customize(
    "content",
    slug=slugs(max_length=64),
    canonical_url=urls(include_fragment=False),
)
PostgreSQL typeDefault strategy
integerst.integers(-2147483648, 2147483647)
bigintst.integers(-(2**63), 2**63 - 1)
booleanst.booleans()
textst.text(max_size=255)
varchar(n)st.text(max_size=n)
uuidst.uuids()
jsonbRecursive JSON value strategies
enum typesst.sampled_from(enum_values)