Test Data Workbench¶
Point it at a database. Get realistic, relationally intact test data back.
Test Data Workbench reflects an unknown schema, classifies what each table represents, and emits working Python generators for it: dependency-ordered, referentially consistent, and readable. The output is not a black box; it is plain generator code you can read, edit, and commit.
Note
This documentation covers installation and usage, the design principles behind the system, the technology stack it is built on, and the reasoning that shaped its architecture. It describes the system as it actually behaves. Where a capability is deliberately out of scope, the docs say so.
What it is¶
Most test-data tools ask you to describe your data first: write a config, a schema definition, a set of rules. Test Data Workbench inverts that. It reads the schema you already have, infers what each table and column means, and writes the generators for you. When it guesses wrong, you correct one line of ordinary Python rather than wrestle a configuration language.
Three ideas define it, covered in Design Principles:
Generated code is the product. The tool emits generator source, not rows behind an API. You can diff it, extend it, and check it into your repo.
Degrade, never fail. Every generation path has a four-level fallback ladder. An unrecognized table gets a plainer generator, not a stack trace.
Determinism on demand. A seed makes any run reproducible byte for byte, so CI fixtures stay stable across machines.
Quickstart¶
pipx install test-data-workbench
# Zero-setup: build a small SQLite shop database and run the full flow
tdw demo --seed 42
# Or against your own database
tdw analyze "sqlite:///shop.db"
tdw deploy "sqlite:///shop.db" --output ./generated --seed 42
Contents¶
Getting Started
Concepts
Foundations
Technology Stack
Reference
About the documentation
Project information¶
- Version:
1.0.0
- License:
Apache-2.0
- Repository: