Gerar CPFs para testes é uma tarefa recorrente em projetos de desenvolvimento e QA, mas fazer isso manualmente é lento e propenso a erros. Com um script automatizado, você garante dados consistentes, válidos ou inválidos conforme necessário, acelerando o processo de testes e evitando falhas por inconsistência nos dados de entrada.
Primeiro, crie um arquivo chamado gerador_cpf.py. O script usará funções para gerar CPFs válidos e inválidos, aplicando o algoritmo de validação do CPF (dígitos verificadores).
import random
def calcula_digito_verificador(parte):
soma = 0
for i, digito in enumerate(parte):
soma += int(digito) * (len(parte) + 1 - i)
resto = soma % 11
return 0 if resto < 2 else 11 - resto
def gerar_cpf_valido():
base = ''.join([str(random.randint(0, 9)) for _ in range(9)])
digito1 = calcula_digito_verificador(base)
digito2 = calcula_digito_verificador(base + str(digito1))
return f"{base}{digito1}{digito2}"
def gerar_cpf_invalido():
base = ''.join([str(random.randint(0, 9)) for _ in range(9)])
return f"{base}{random.randint(0, 9)}{random.randint(0, 9)}"
def gerar_fixture(qtd_validos=5, qtd_invalidos=5):
fixture = []
for _ in range(qtd_validos):
fixture.append({'cpf': gerar_cpf_valido(), 'valido': True})
for _ in range(qtd_invalidos):
fixture.append({'cpf': gerar_cpf_invalido(), 'valido': False})
return fixture
if __name__ == "__main__":
fixture = gerar_fixture(5, 5)
for item in fixture:
print(f"CPF: {item['cpf']} - {'Válido' if item['valido'] else 'Inválido'}")
Execute o script no terminal para gerar a fixture. Você pode redirecionar a saída para um arquivo CSV ou JSON, facilitando a importação em testes automatizados.
# Para salvar em CSV
python gerador_cpf.py > fixture_cpf.csv
# Para salvar em JSON (adicione este trecho ao script)
import json
print(json.dumps(fixture, indent=2))
| CPF Gerado | Status |
|---|---|
| 12345678909 | Inválido |
| 98765432101 | Inválido |
| 11122233396 | Válido |
| 47185682800 | Válido |
Com este script, você automatiza a geração de CPFs para fixture de testes em segundos, garantindo dados válidos e inválidos conforme necessário. Isso elimina a necessidade de digitação manual, reduz erros e acelera significativamente o processo de validação em seus projetos.