Автоматизація тестів верифікації електронної пошти за допомогою одноразових адрес
Тестування потоків, пов'язаних з електронною поштою, — одне з найскладніших завдань в автоматизації. Від реєстрації користувачів до скидання паролів і систем сповіщень — кожен із цих потоків потребує реальної поштової адреси, яка може отримувати листи.
Налаштування тестового середовища
Для початку вам знадобиться API-ключ EvilMail. Отримайте його в панелі керування та збережіть як змінну середовища:
export EVILMAIL_API_KEY="your-api-key-here"Створення тестових email-адрес через API
Для кожного тесту створіть унікальну адресу:
curl -X POST https://evilmail.com/api/temp-email
-H "Authorization: Bearer $EVILMAIL_API_KEY"
-H "Content-Type: application/json"
-d '{"domain": "evilmail.com"}'Відповідь міститиме згенеровану email-адресу, яку ви зможете використати у тесті.
Опитування поштової скриньки на наявність повідомлень
Після виконання дії, яка має відправити лист (реєстрація, скидання пароля тощо), потрібно перевірити скриньку:
curl -X GET https://evilmail.com/api/inbox/[email protected]
-H "Authorization: Bearer $EVILMAIL_API_KEY"Приклад на Python: очікування листа
import time
import requests
def wait_for_email(address, api_key, timeout=30, interval=2):
"""Очікує на отримання листа у вказаній скриньці."""
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")Інтеграція з 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/ -vЩо перевіряти в email-тестах
- Доставку — лист дійсно надійшов
- Тему листа — відповідає очікуваній
- Вміст — містить правильні посилання та дані
- Відправника — поле From відповідає очікуваному
- Час доставки — лист надходить у прийнятні терміни
Масштабування до сотень тестів
Для великих тестових наборів створюйте адреси паралельно та використовуйте унікальні ідентифікатори для кожного тесту. API EvilMail підтримує високу кількість запитів, що дозволяє запускати сотні тестів одночасно без обмежень.

