Para desenvolvedores que precisam de dados de teste realistas, gerar CPFs válidos é uma tarefa comum. Este método utiliza o algoritmo oficial de validação do CPF, garantindo que os números gerados passem em qualquer verificação de integridade.
A função abaixo gera CPFs válidos aleatoriamente, seguindo o algoritmo de cálculo dos dígitos verificadores. O processo começa com 9 dígitos aleatórios, depois calcula os dois dígitos verificadores finais.
import random
def gerar_cpf():
# Gerar 9 dígitos iniciais aleatoriamente
digitos = [random.randint(0, 9) for _ in range(9)]
# Calcular o primeiro dígito verificador
soma = sum((10 - i) * digito for i, digito in enumerate(digitos))
resto = soma % 11
digito1 = 0 if resto < 2 else 11 - resto
digitos.append(digito1)
# Calcular o segundo dígito verificador
soma = sum((11 - i) * digito for i, digito in enumerate(digitos))
resto = soma % 11
digito2 = 0 if resto < 2 else 11 - resto
digitos.append(digito2)
# Formatar como string com pontuação
cpf = ''.join(map(str, digitos))
return f'{cpf[:3]}.{cpf[3:6]}.{cpf[6:9]}-{cpf[9:]}'
Para gerar uma lista de CPFs para testes em massa, podemos criar uma função que chama a função anterior várias vezes.
def gerar_cpfs_quantidade(quantidade):
return [gerar_cpf() for _ in range(quantidade)]
# Exemplo: Gerar 5 CPFs
cpfs_gerados = gerar_cpfs_quantidade(5)
for cpf in cpfs_gerados:
print(cpf)
| Função Chamada | Saída Gerada | Validação |
|---|---|---|
| gerar_cpf() | 123.456.789-09 | Válido (algoritmo aplicado) |
| gerar_cpfs_quantidade(3) |
|
Todos válidos |
Para garantir a confiabilidade, podemos adicionar uma função de validação que verifica se o CPF gerado está correto.
def validar_cpf(cpf):
# Remover pontuação
cpf_limpo = ''.join(filter(str.isdigit, cpf))
# Verificar se todos os dígitos são iguais
if len(set(cpf_limpo)) == 1:
return False
# Extrair os 9 primeiros dígitos
digitos = list(map(int, cpf_limpo[:9]))
# Calcular primeiro dígito verificador
soma = sum((10 - i) * digito for i, digito in enumerate(digitos))
resto = soma % 11
digito1 = 0 if resto < 2 else 11 - resto
# Calcular segundo dígito verificador
digitos.append(digito1)
soma = sum((11 - i) * digito for i, digito in enumerate(digitos))
resto = soma % 11
digito2 = 0 if resto < 2 else 11 - resto
# Comparar com os dígitos verificadores do CPF
verificadores = f'{digito1}{digito2}'
return verificadores == cpf_limpo[9:]
# Testar validação
cpf_teste = gerar_cpf()
print(f'CPF gerado: {cpf_teste}')
print(f'Válido: {validar_cpf(cpf_teste)}')
Com este script Python, você pode gerar CPFs válidos para teste em segundos, eliminando a necessidade de dados reais ou de digitação manual. O algoritmo implementado segue rigorosamente as regras de validação do CPF brasileiro, garantindo que os dados gerados sejam aceitos por qualquer sistema de validação.