pytest · conftest · UF

Gerador de RG em pytest

Fixture pytest com RG válido por UF. Session fixture, conftest.py, integração pytest-django. SDK fakeforge-br.

pip install fakeforge-br pytest pytest-mock

conftest.py

# tests/conftest.py
import pytest
from fakeforge import FakeForge

@pytest.fixture(scope="session")
def ff():
    return FakeForge()

@pytest.fixture(scope="session")
def rgs(ff):
    return ff.rg(100)

@pytest.fixture(scope="session")
def pessoas_com_rg(ff):
    customers = ff.preset("customer", 50)
    rgs = ff.rg(50)
    return [
        {**c, "rg": rg, "uf_emissor": c["endereco"]["estado"]}
        for c, rg in zip(customers, rgs)
    ]

Teste validador

# tests/test_validador_rg.py
import pytest
from myapp.validators import validar_rg

class TestValidadorRg:
    def test_aceita_rgs_validos(self, rgs):
        for rg in rgs[:30]:
            assert validar_rg(rg), f"Rejeitou RG válido: {rg}"

    def test_rejeita_rg_invalido(self):
        assert not validar_rg("00.000.000-0")
        assert not validar_rg("abc")

Uso em pytest-django

# tests/test_identidade_model.py
import pytest
from myapp.models import Identidade

@pytest.mark.django_db
class TestIdentidadeModel:
    def test_salva_identidade_com_rg(self, pessoas_com_rg):
        p = pessoas_com_rg[0]
        obj = Identidade.objects.create(
            cpf=p["cpf"], nome=p["nome"],
            rg=p["rg"], uf_emissor=p["uf_emissor"],
        )
        assert obj.pk is not None

    def test_bulk_seed(self, pessoas_com_rg):
        Identidade.objects.bulk_create([
            Identidade(cpf=p["cpf"], nome=p["nome"], rg=p["rg"], uf_emissor=p["uf_emissor"])
            for p in pessoas_com_rg
        ])
        assert Identidade.objects.count() == len(pessoas_com_rg)