18 / 65 · 15 SQL & Database Testing · Data Manipulation← prev⊞ allnext →☰ Read as one page
3.2INSERT: Creating Test Data
-- Create a test user with specific attributes
INSERT INTO users (id, name, email, role, created_at)
VALUES ('test-uuid-001', 'Test User', 'testuser@automation.com', 'admin',
NOW() - INTERVAL '90 days');
-- Create multiple orders for the test user
INSERT INTO orders (id, user_id, status, total, created_at) VALUES
('order-001', 'test-uuid-001', 'completed', 99.99, NOW() - INTERVAL '30 days'),
('order-002', 'test-uuid-001', 'pending', 149.50, NOW() - INTERVAL '1 day'),
('order-003', 'test-uuid-001', 'cancelled', 75.00, NOW() - INTERVAL '15 days');
-- Create line items for an order
INSERT INTO line_items (order_id, product_id, quantity, unit_price) VALUES
('order-001', 'prod-a', 2, 25.00),
('order-001', 'prod-b', 1, 49.99);
Why Direct DB Setup Is Faster
| Method | Time to Create User + 3 Orders | Dependencies |
|---|---|---|
| UI clicks | Minutes | Browser, page loads, forms |
| API calls | Seconds | Auth flow, business logic |
| Direct SQL | Milliseconds | Database connection only |
For complex test scenarios (user with 100 orders, specific date distributions, edge-case data), SQL is orders of magnitude faster.