pytest · conftest · alfanumérico 2026
Gerador de CNPJ em pytest
Fixture pra CNPJ válido em testes pytest — cobre numérico e alfanumérico 2026. Session fixture pra economizar API calls, conftest.py compartilhado, parametrize com batch, integração com pytest-django. SDK fakeforge-br.
TL;DR
pip install fakeforge-br pytest
# conftest.py
import pytest
from fakeforge import FakeForge
@pytest.fixture(scope="session")
def ff():
return FakeForge()conftest.py compartilhado
# tests/conftest.py
import pytest
from fakeforge import FakeForge
@pytest.fixture(scope="session")
def ff():
return FakeForge()
@pytest.fixture(scope="session")
def cnpjs_numericos(ff):
"""200 CNPJs numéricos pré-carregados."""
return ff.cnpj(200)
@pytest.fixture(scope="session")
def cnpjs_alfanumericos(ff):
"""100 CNPJs no formato 2026 (IN RFB 2.229)."""
return ff.cnpj_alfa(100)
@pytest.fixture(scope="session")
def empresa_completa(ff):
"""Empresa correlacionada: CNPJ + razão social + endereço."""
return ff.preset("company", 1)[0]Teste de validador (numérico + alfa)
# tests/test_validador_cnpj.py
import pytest
from myapp.validators import validar_cnpj
class TestValidadorCnpj:
def test_aceita_cnpjs_numericos_validos(self, cnpjs_numericos):
for cnpj in cnpjs_numericos:
assert validar_cnpj(cnpj), f"Rejeitou CNPJ válido: {cnpj}"
def test_aceita_cnpjs_alfanumericos_2026(self, cnpjs_alfanumericos):
"""IN RFB 2.229 vigência 01/07/2026. Sistemas DEVEM aceitar."""
for cnpj in cnpjs_alfanumericos:
assert validar_cnpj(cnpj), f"Validador NÃO cobre 2026: {cnpj}"
def test_rejeita_cnpj_invalido(self):
assert not validar_cnpj("11.111.111/1111-11")
assert not validar_cnpj("abc")
assert not validar_cnpj("")Uso em pytest-django
# tests/test_empresa_model.py
import pytest
from myapp.models import Empresa
@pytest.mark.django_db
class TestEmpresaModel:
def test_salva_empresa_com_cnpj_numerico(self, empresa_completa):
obj = Empresa.objects.create(
razao_social=empresa_completa["razao_social"],
cnpj=empresa_completa["cnpj"],
)
assert obj.pk is not None
def test_bulk_seed_1000_empresas(self, ff):
cnpjs = ff.cnpj(500)
cnpjs_alfa = ff.cnpj_alfa(500)
Empresa.objects.bulk_create([
Empresa(razao_social=f"Test {i}", cnpj=cnpj)
for i, cnpj in enumerate(cnpjs + cnpjs_alfa)
])
assert Empresa.objects.count() == 1000Parametrize massa (stress test)
# tests/test_receita_client.py
import pytest
from myapp.receita import ReceitaClient
class TestReceitaClient:
@pytest.fixture(autouse=True)
def mock_receita(self, mocker):
mocker.patch(
"myapp.receita.ReceitaClient.consultar",
return_value={"situacao": "ATIVA", "razao_social": "Mock LTDA"}
)
@pytest.mark.parametrize("indice", range(50))
def test_client_lida_com_qualquer_cnpj_valido(self, cnpjs_numericos, indice):
client = ReceitaClient()
result = client.consultar(cnpjs_numericos[indice])
assert result["situacao"] == "ATIVA"