Skip to content

Custom Generators

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

Basic Override

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),
)

Well-Known Strategies

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),
)

Type Mapping Examples

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)