Traduit automatiquement de l’anglais.

Lire en anglais
Proxy Mail QA

Tester les e-mails d’inscription avec pytest

Pour tester la vérification d’e-mail dans pytest, donnez à chaque test une adresse neuve, inscrivez-vous avec, puis attendez le code ou le lien et terminez le parcours. Le helper Python de Proxy Mail QA tient en un fichier n’utilisant que la bibliothèque standard : create_address avant le formulaire, wait_for_code ou wait_for_link après. Il fonctionne avec Playwright pour Python et Selenium, avec le forfait Free.

Mis à jour le

Configuration

Copiez le helper, proxymail_qa.py, depuis la documentation Python dans votre dossier de tests, et placez une clé d’API dans PROXYMAIL_QA_API_KEY, dans votre shell, dans un fichier .env exclu de Git ou dans les secrets de votre CI. Le forfait Free suffit.

Le test

Avec Playwright pour 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"])

Pour un code, utilisez wait_for_code(address, since=submitted) et saisissez ce qu’il renvoie. Avec Selenium, les appels sont les mêmes : trouvez les champs avec driver.find_element et envoyez le code ou ouvrez le lien. since fait ignorer à l’attente tout ce qui a été envoyé avant l’envoi du formulaire : un test relancé ne lit donc jamais un ancien e-mail.

Vérifier l’e-mail, pas seulement le lien

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 renvoie des verdicts sur SPF, DKIM et DMARC, les liens vers localhost ou en http simple, la destination du lien et plus encore, jamais l’e-mail lui-même. expect_no_email vérifie qu’une action n’envoie rien, comme une seconde demande de réinitialisation qui doit être refusée.

L’exécuter dans CI, avec un rapport sur la pull request

Importez les hooks pytest du helper dans conftest.py. Dans GitHub Actions, ajoutez l’action Proxy Mail QA avant les tests : le rapport sur la pull request indique alors de quel test provient chaque e-mail, et liste les tests échoués avec ce qu’ont fait leurs e-mails.

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 }}

Les hooks ne font rien en dehors d’une exécution et ne font jamais échouer vos tests eux-mêmes. Plus d’informations dans la documentation Python et Exécution dans CI.

Essayez-le lors de votre prochain test d’inscription

Offre gratuite, sans carte bancaire. Créez une adresse et regardez arriver le code ou le lien.

Créer un compte gratuitOuvrir l'application

Questions

Existe-t-il un paquet pip ?

Pas encore. Le helper est un fichier unique n’utilisant que la bibliothèque standard de Python : copiez-le depuis la documentation Python dans votre dossier de tests, il n’y a rien à installer ni à maintenir à jour.

Est-ce que cela fonctionne avec Selenium ?

Oui. Le helper ne touche pas au navigateur : il crée l’adresse et renvoie le code ou le lien, et votre code Selenium ou Playwright le saisit ou l’ouvre.

Et si l’e-mail n’arrive jamais ?

L’attente lève ProxyMailQAError en expliquant pourquoi, autant que Proxy Mail QA puisse le savoir : le plus souvent, le fournisseur d’e-mail de l’application est en mode sandbox ou test et n’envoie qu’aux adresses vérifiées. Corrigez le côté envoi plutôt que d’attendre plus longtemps.

Vous avez créé votre application avec un outil d’IA ? Choisissez le vôtre

Une question sur cette page ?

Posez votre question dans la langue de votre choix. La documentation peut y répondre tout de suite, ou vous pouvez l'envoyer à l'équipe Proxy Mail QA, qui répond en anglais.

Interroger la documentation