Testes automatizados precisam de dados. Se o seu sistema valida CPF, endereço ou dados bancários, você precisa de dados brasileiros no formato correto para que os testes passem. Em vez de manter fixtures estáticas que ficam desatualizadas, use uma API para gerar dados frescos a cada execução.
O problema com fixtures estáticas
- Fixtures de JSON hardcodadas ficam defasadas quando o schema muda
- Poucos registros de teste não cobrem edge cases
- Dados copiados de produção violam a LGPD
- Manter arquivos de seed atualizados é trabalho manual repetitivo
Solução: API de dados no pipeline
A API do FakeForge gera dados brasileiros fictícios sob demanda, com formatação válida e campos correlacionados. Integra em qualquer linguagem via HTTP.
Exemplo 1: Node.js (Jest / Vitest)
// test/helpers/seed.ts
export async function seedCustomers(count = 50) {
const res = await fetch("https://fakeforge.com.br/api/generate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ preset: "customer", quantity: count }),
});
const { data } = await res.json();
// Inserir no banco de teste
for (const customer of data) {
await db.customer.create({
data: {
name: customer.nome,
cpf: customer.cpf,
email: customer.email,
phone: customer.telefone,
},
});
}
return data;
}Exemplo 2: Python (pytest)
# conftest.py
import requests
import pytest
@pytest.fixture
def customers():
resp = requests.post(
"https://fakeforge.com.br/api/generate",
json={"preset": "customer", "quantity": 20}
)
return resp.json()["data"]
def test_customer_registration(customers, client):
for c in customers:
response = client.post("/api/register", json={
"name": c["nome"],
"cpf": c["cpf"],
"email": c["email"],
})
assert response.status_code == 201Exemplo 3: GitHub Actions
# .github/workflows/test.yml
name: Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
env:
POSTGRES_DB: test
POSTGRES_PASSWORD: test
ports: ["5432:5432"]
steps:
- uses: actions/checkout@v4
- name: Seed test database
run: |
curl -s -X POST https://fakeforge.com.br/api/generate \
-H "Content-Type: application/json" \
-d '{"preset":"customer","quantity":100,"format":"sql"}' \
| PGPASSWORD=test psql -h localhost -U postgres -d test
- name: Run tests
run: npm testSchema customizado
Se os presets não atendem sua estrutura, defina um schema customizado:
curl -X POST https://fakeforge.com.br/api/generate \
-H "Content-Type: application/json" \
-d '{
"schema": [
{"name": "documento", "type": "cpf"},
{"name": "titular", "type": "fullName"},
{"name": "contato", "type": "email"},
{"name": "cep", "type": "cep"},
{"name": "cartao", "type": "creditCard"}
],
"quantity": 50,
"format": "json"
}'O nome no campo contato (email) vai corresponder ao nome no campo titular — dados correlacionados automaticamente.
Limites e planos
O tier gratuito permite 100 requests por dia — suficiente para desenvolvimento local. Para CI/CD que roda em cada commit, o plano Dev (R$29/mês) oferece 10.000 requests por dia com API key dedicada.