Início Blog Automatizando Testes de Verificação de E-mail com Endereços Descartáveis Configurando o Ambiente de TestesTestar fluxos de verificação de e-mail manualmente é lento, propenso a erros e não escalável. A solução é automatizar todo o processo utilizando endereços de e-mail descartáveis que podem ser criados e descartados sob demanda.
Para começar, você precisará de:
Uma chave de API do EvilMail Python 3.8+ instalado A biblioteca requests pip install requests pytest Criando E-mails de Teste via APIO primeiro passo é gerar um endereço de e-mail descartável para cada caso de teste:
curl -X POST https://evilmail.com/api/temp-email
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{"domain": "evilmail.com", "prefix": "test-signup"}'A API retorna um endereço de e-mail único que está imediatamente pronto para receber mensagens.
Monitorando a Caixa de EntradaApós acionar o fluxo de verificação da sua aplicação, você precisa monitorar a caixa de entrada até que o e-mail de verificação chegue:
curl -X GET https://evilmail.com/api/inbox/[email protected]
-H "Authorization: Bearer YOUR_API_KEY"
Exemplo em Python: wait_for_emailAqui está uma função robusta para aguardar o e-mail de verificação com timeout e polling:
import requests
import time
def wait_for_email(address, api_key, timeout=60, interval=2):
"""Aguarda a chegada de um e-mail na caixa de entrada especificada."""
url = f"https://evilmail.com/api/inbox/{address}"
headers = {"Authorization": f"Bearer {api_key}"}
deadline = time.time() + timeout
while time.time() < deadline:
response = requests.get(url, headers=headers)
response.raise_for_status()
messages = response.json().get("messages", [])
if messages:
return messages[0]
time.sleep(interval)
raise TimeoutError(
f"Nenhum e-mail recebido em {address} após {timeout} segundos"
)
# Uso em um teste
def test_signup_verification():
# 1. Criar e-mail temporário
resp = requests.post(
"https://evilmail.com/api/temp-email",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"domain": "evilmail.com", "prefix": "test-signup"}
)
email = resp.json()["email"]
# 2. Registrar usuário na sua aplicação
requests.post("https://yourapp.com/signup", json={
"email": email,
"password": "TestPassword123!"
})
# 3. Aguardar e-mail de verificação
message = wait_for_email(email, "YOUR_API_KEY")
# 4. Extrair link de verificação e confirmar
assert "verify" in message["body"].lower()
assert message["subject"] is not None
Integre os testes de verificação de e-mail ao seu pipeline de CI/CD com GitHub Actions:
name: Email Verification Tests
on: [push, pull_request]
jobs:
test-email-flows:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: pip install requests pytest
- name: Run email verification tests
env:
EVILMAIL_API_KEY: ${{ secrets.EVILMAIL_API_KEY }}
run: pytest tests/test_email_verification.py -v
Asserções e ValidaçõesTestes eficazes de verificação de e-mail devem validar:
A entrega do e-mail dentro do tempo esperado O assunto e remetente corretos A presença de um link de verificação válido no corpo O funcionamento correto do link de verificação A ativação da conta após a verificação
Escalando para Centenas de TestesAo escalar sua suíte de testes, considere:
Prefixos únicos: Use timestamps ou UUIDs nos prefixos dos e-mails para evitar colisões Execução paralela: Configure o pytest-xdist para executar testes em paralelo Rate limiting: Respeite os limites da API e implemente backoff exponencial Limpeza: Exclua endereços temporários após os testes para manter o ambiente limpo # Executar 8 testes em paralelo
pytest tests/test_email_verification.py -n 8 --dist=loadfileCom esta abordagem, é possível executar centenas de testes de verificação de e-mail de forma confiável e eficiente em seu pipeline de CI/CD.