Deterministic Fixture Factory

Generate repeatable fake users from a seeded random source, with per-call overrides and stable identifiers for snapshots.

PythonCli Tooling

Code

snippet
import random
import string
from dataclasses import dataclass, replace


@dataclass(frozen=True)
class User:
    identifier: int
    email: str
    display_name: str
    created_at: str


class FixtureFactory:
    def __init__(self, seed: int = 20261021) -> None:
        self._rng = random.Random(seed)
        self._next_id = 1
        self._created_at = "2026-10-21T00:00:00Z"

    def _word(self, length: int = 6) -> str:
        return "".join(self._rng.choice(string.ascii_lowercase) for _ in range(length))

    def user(self, **overrides: object) -> User:
        identifier = self._next_id
        self._next_id += 1
        user = User(
            identifier=identifier,
            email=f"{self._word(5)}.{identifier}@example.test",
            display_name=f"{self._word(4).title()} {self._word(6).title()}",
            created_at=self._created_at,
        )
        return replace(user, **overrides)  # type: ignore[arg-type]

    def users(self, count: int) -> list[User]:
        if count < 0:
            raise ValueError("count must not be negative")
        return [self.user() for _ in range(count)]


def main() -> None:
    first = FixtureFactory(seed=7).users(3)
    again = FixtureFactory(seed=7).users(3)
    other = FixtureFactory(seed=8).users(3)
    print(first)
    print("deterministic:", first == again)
    print("seed changes output:", first != other)
    print("override:", replace(first[0], email="[email protected]"))


if __name__ == "__main__":
    main()