pytest · conftest · ViaCEP mock
Gerador de CEP em pytest
Fixture pytest com CEP brasileiro válido. conftest.py, pytest-django, mock ViaCEP API.
pip install fakeforge-br pytest pytest-mockconftest.py
# tests/conftest.py
import pytest
from fakeforge import FakeForge
@pytest.fixture(scope="session")
def ff():
return FakeForge()
@pytest.fixture(scope="session")
def ceps(ff):
return ff.cep(100)
@pytest.fixture(scope="session")
def enderecos_completos(ff):
return ff.address(50)
@pytest.fixture
def cep(ff):
return ff.cep(1)[0]Teste validador CEP
# tests/test_cep_validator.py
import pytest
from myapp.validators import validar_cep
class TestValidadorCep:
def test_aceita_ceps_do_fakeforge(self, ceps):
for c in ceps[:30]:
assert validar_cep(c), f"Rejeitou CEP válido: {c}"
def test_rejeita_cep_invalido(self):
assert not validar_cep("00000-000")
assert not validar_cep("")
assert not validar_cep("abc")
@pytest.mark.parametrize("indice", range(20))
def test_formato_correto(self, ceps, indice):
c = ceps[indice]
# 5 dígitos + hífen + 3 dígitos
assert len(c) == 9
assert c[5] == "-"
assert c.replace("-", "").isdigit()Mock ViaCEP com pytest-mock
# tests/test_viacep_service.py
class TestViaCEPService:
@pytest.fixture(autouse=True)
def mock_viacep(self, mocker):
return mocker.patch(
"myapp.viacep.ViaCEPClient.consultar",
return_value={
"logradouro": "Rua Mock", "bairro": "Mock",
"localidade": "São Paulo", "uf": "SP",
}
)
def test_consulta_viacep(self, cep, mock_viacep):
from myapp.viacep.service import ViaCEPService
service = ViaCEPService()
result = service.consultar(cep)
assert result["uf"] == "SP"
mock_viacep.assert_called_once_with(cep)