ragfica.pages.dev

Como criar um script para gerar fixture de testes com CPFs válidos e inválidos?

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.

Pré-requisitos

Passo 1: Criar o script Python para gerar CPFs

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'}")

Passo 2: Executar o script e salvar os dados

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))

Exemplo Prático

CPF Gerado Status
12345678909 Inválido
98765432101 Inválido
11122233396 Válido
47185682800 Válido

Conclusão

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.