Precept 0.10.0

Precept.TestData

Test data management for Precept: environment-specific data sets for the users, clients, vehicles and anything else a suite needs, dynamic value generation, factories that create and clean up data in the system under test, and pooled records leased exclusively to parallel tests.

dotnet add package Precept.TestData
services.AddPreceptTestData();
// testdata.json, beside the test binary
{
  "users": {
    "admin": { "username": "admin@acme.test", "password": "{{env:ADMIN_PASSWORD}}" }
  },
  "clients": {
    "new": { "name": "Acme {{unique}}", "email": "acme-{{unique}}@acme.test" }
  }
}
var admin = TestData.Get<TestUser>("admin");
var password = TestData.Value("users:admin:password");

testdata.json is overlaid by testdata.{environment}.json and then by PRECEPT_TESTDATA__* environment variables — which is how a password reaches a run without being written down in the repository.

{{unique}}, {{guid}}, {{now:+2d}}, {{random:1000-9999}} and friends are expanded when a value is read, so a suite that inserts the same email address on every run stops failing on the second one. Within a scenario the values are stable, so every step sees what the first one created; a retry generates fresh ones, so a test that failed on a duplicate key stops colliding with itself.

The module's types live in the root Precept namespace, so a step definition needs no further using.

A coding agent can get all of this — checked against the project in front of it, down to which set a type reads and whether the data files reach the output directory — from precept_explain_testdata in Precept.Mcp.


Part of Precept, a .NET 10 test automation framework. Full documentation: test data · dynamic values · factories · pooled data

Precept 0.10.0 · MIT · © 2026

Esc