Traducido automáticamente del inglés.

Leer en inglés
Proxy Mail QA

Prueba correos de registro con pytest

Para probar la verificación por correo en pytest, da a cada prueba una dirección nueva, regístrate con ella y luego espera el código o enlace y completa el flujo. El helper de Python de Proxy Mail QA es un solo archivo que usa solo la biblioteca estándar: create_address antes del formulario, wait_for_code o wait_for_link después. Funciona con Playwright para Python y Selenium, en el plan Free.

Actualizado el

Configuración

Copia el helper, proxymail_qa.py, desde la documentación de Python a tu carpeta de pruebas, y pon una clave de API en PROXYMAIL_QA_API_KEY, en tu shell, en un archivo .env excluido de Git o en los secretos de tu CI. El plan Free es suficiente.

La prueba

Con Playwright para Python:

test_signup.py
import re
from playwright.sync_api import Page, expect
from proxymail_qa import create_address, delete_address, now, wait_for_link
def test_sign_up_verifies_the_email(page: Page):
account = create_address()
page.goto("/signup")
page.get_by_label("Email").fill(account["address"])
page.get_by_label("Password").fill(account["password"])
submitted = now()
page.get_by_role("button", name="Sign up").click()
page.goto(wait_for_link(account["address"], since=submitted))
expect(page).to_have_url(re.compile("verified"))
delete_address(account["address"])

Para un código, usa wait_for_code(address, since=submitted) y escribe lo que devuelve. Con Selenium, las llamadas son las mismas: busca los campos con driver.find_element y envía el código o abre el enlace. since hace que la espera ignore todo lo enviado antes de enviar el formulario, así una prueba reintentada nunca lee un correo antiguo.

Revisa el correo, no solo el enlace

test_emails.py
import time
from proxymail_qa import check_email, count_emails, now, wait_for_link
def test_sign_up_sends_one_good_verification_email(page, account):
submitted = now()
page.get_by_role("button", name="Sign up").click()
wait_for_link(account["address"], since=submitted)
time.sleep(10) # give a duplicate time to arrive
assert count_emails(account["address"], since=submitted, type="link")["count"] == 1
assert check_email(account["address"], since=submitted, expect_host="staging.example.com")["failed"] == []

check_email devuelve veredictos sobre SPF, DKIM y DMARC, enlaces a localhost o a http sin cifrar, adónde lleva el enlace y más, nunca el correo en sí. expect_no_email comprueba que una acción no envíe nada, como una segunda solicitud de restablecimiento que debería rechazarse.

Ejecútalo en CI, con un reporte en el pull request

Importa los hooks de pytest del helper en conftest.py. En GitHub Actions, agrega la acción de Proxy Mail QA antes de las pruebas: el reporte en el pull request indica de qué prueba vino cada correo y lista las pruebas fallidas con lo que hicieron sus correos.

conftest.py
from proxymail_qa import pytest_runtest_setup, pytest_runtest_teardown, pytest_runtest_logreport, pytest_sessionfinish
.github/workflows/e2e.yml
- uses: aaquib90/proxymail-qa-action@v1
with:
api-key: ${{ secrets.PROXYMAIL_QA_API_KEY }}
- run: pytest
env:
PROXYMAIL_QA_API_KEY: ${{ secrets.PROXYMAIL_QA_API_KEY }}

Los hooks no hacen nada fuera de una ejecución y nunca hacen fallar tus pruebas por sí mismos. Más en la documentación de Python y en Ejecutar en CI.

Úsalo en tu próxima prueba de registro

Plan gratuito, sin tarjeta de crédito. Crea una dirección y mira cómo llega el código o el enlace.

Crear una cuenta gratuitaAbrir la aplicación

Preguntas

¿Hay un paquete de pip?

Todavía no. El helper es un solo archivo que usa solo la biblioteca estándar de Python: cópialo desde la documentación de Python a tu carpeta de pruebas, y no hay nada que instalar ni mantener actualizado.

¿Funciona con Selenium?

Sí. El helper no toca el navegador: crea la dirección y devuelve el código o enlace, y tu código de Selenium o Playwright lo escribe o lo abre.

¿Y si el correo nunca llega?

La espera lanza ProxyMailQAError explicando el motivo hasta donde Proxy Mail QA puede saberlo: lo más común es que el proveedor de correo de la app esté en modo sandbox o de prueba y solo envíe a direcciones verificadas. Corrige el lado del envío en lugar de esperar más.

¿Creaste tu app con una herramienta de IA? Elige la tuya

¿Tienes una pregunta sobre esta página?

Pregunta en cualquier idioma. La documentación puede responderte de inmediato, o puedes enviar tu pregunta al equipo de Proxy Mail QA, que responde en inglés.