Automatyzacja testów weryfikacji e-mail za pomocą jednorazowych adresów
Testowanie przepływów związanych z pocztą elektroniczną to jedno z najtrudniejszych zadań w automatyzacji. Od rejestracji użytkowników, przez resetowanie haseł, po systemy powiadomień — każdy z tych przepływów wymaga prawdziwego adresu e-mail, który może odbierać wiadomości.
Konfiguracja środowiska testowego
Na początek potrzebujesz klucza API EvilMail. Uzyskaj go w panelu sterowania i zapisz jako zmienną środowiskową:
export EVILMAIL_API_KEY="your-api-key-here"Tworzenie testowych adresów e-mail przez API
Dla każdego testu utwórz unikalny adres:
curl -X POST https://evilmail.com/api/temp-email
-H "Authorization: Bearer $EVILMAIL_API_KEY"
-H "Content-Type: application/json"
-d '{"domain": "evilmail.com"}'Odpowiedź będzie zawierać wygenerowany adres e-mail, który możesz wykorzystać w teście.
Odpytywanie skrzynki o nowe wiadomości
Po wykonaniu akcji, która powinna wysłać wiadomość (rejestracja, resetowanie hasła itp.), musisz sprawdzić skrzynkę:
curl -X GET https://evilmail.com/api/inbox/[email protected]
-H "Authorization: Bearer $EVILMAIL_API_KEY"Przykład w Pythonie: oczekiwanie na wiadomość
import time
import requests
def wait_for_email(address, api_key, timeout=30, interval=2):
"""Czeka na otrzymanie wiadomości w podanej skrzynce."""
elapsed = 0
while elapsed < timeout:
response = requests.get(
f"https://evilmail.com/api/inbox/{address}",
headers={"Authorization": f"Bearer {api_key}"}
)
messages = response.json().get("messages", [])
if messages:
return messages[0]
time.sleep(interval)
elapsed += interval
raise TimeoutError(f"No email received at {address} within {timeout}s")Integracja z CI/CD (GitHub Actions)
name: Email Flow Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run email tests
env:
EVILMAIL_API_KEY: ${{ secrets.EVILMAIL_API_KEY }}
run: pytest tests/email/ -vCo sprawdzać w testach e-mail
- Dostarczenie — wiadomość faktycznie dotarła
- Temat wiadomości — odpowiada oczekiwanemu
- Treść — zawiera prawidłowe linki i dane
- Nadawcę — pole From jest zgodne z oczekiwanym
- Czas dostarczenia — wiadomość dociera w akceptowalnym czasie
Skalowanie do setek testów
W przypadku dużych zestawów testowych twórz adresy równolegle i używaj unikalnych identyfikatorów dla każdego testu. API EvilMail obsługuje dużą liczbę żądań, co pozwala uruchamiać setki testów jednocześnie bez ograniczeń.


