Start here. This is the direct spoken answer to practice first.
Overview
Uses fixture factories and test-data builders to keep setup flexible, readable, and owned by each test.
I use a fixture factory when a test needs several objects or needs to vary important fields. The fixture returns a small function that creates an object with sensible defaults and accepts explicit overrides. That keeps the test focused on the values that matter without forcing every test through one shared object. The fixture still owns any created resources and cleans them afterward.