EvilMail
Mga Developer

Pag-automate ng Email Verification Test Gamit ang Disposable Address

Bumuo ng maaasahang end-to-end test para sa signup flow, password reset, at notification system gamit ang EvilMail API.

EvilMail TeamFebruary 20, 20269 min basahin

Kung nagpapadala ng email ang iyong application — signup confirmation, password reset, invoice, notification — kailangan mo ng automated test na nagve-verify na talagang dumarating ang mga email na iyon at naglalaman ng tamang content. Nakita na namin ang napakaraming team na nilalaktawan ang email testing dahil mukhang komplikado. Hindi naman, at papatunayan ng gabay na ito.

Ang pangunahing problema sa pag-test ng email flow ay kailangan mo ng tunay at maabot na mga inbox na maaari mong basahin nang programmatic. Ang paggamit ng personal na Gmail account sa CI pipeline ay marupok, hindi ligtas, at hindi nag-i-scale. Dito mismo kumikita ng lugar ang mga disposable email API sa isang mature na testing stack.

Pag-setup ng Iyong Test Environment Una, kunin ang iyong API key mula sa EvilMail dashboard. Iimbak ito bilang environment variable sa iyong CI system — huwag kailanman mag-commit ng API key sa version control. ``` export EVILMAIL_API_KEY="your_api_key_here" ```

Paggawa ng Test Email Address Bago ang bawat test run, gumawa ng bagong disposable email: ``` curl -X POST https://evilmail.pro/api/temp-email \ -H 'Content-Type: application/json' \ -H 'X-API-Key: '"$EVILMAIL_API_KEY" \ -d '{"domain": "evilmail.pro", "ttlMinutes": 30}' ```

Kasama sa response ang email address at isang session token. Gamitin ang email address upang mag-register ng test account sa iyong application.

Pag-poll sa Inbox Pagkatapos mag-trigger ng email-sending action sa iyong app (registration, password reset, atbp.), i-poll ang inbox endpoint hanggang sa dumating ang mensahe: ``` curl https://evilmail.pro/api/inbox \ -H 'X-API-Key: '"$EVILMAIL_API_KEY" ```

Sa totoong test, ilalagay mo ito sa isang retry loop na may timeout. Narito ang isang praktikal na halimbawa sa Python: ``` import requests import time

API_KEY = os.environ['EVILMAIL_API_KEY'] BASE = 'https://evilmail.pro'

def wait_for_email(subject_contains, timeout=60): deadline = time.time() + timeout while time.time() < deadline: r = requests.get(f'{BASE}/api/inbox', headers={'X-API-Key': API_KEY}) messages = r.json().get('data', []) for msg in messages: if subject_contains in msg['subject']: return msg time.sleep(3) raise TimeoutError('Email not received') ```

Pag-integrate sa CI/CD Pipeline Gumagana nang maayos ang pattern na ito sa anumang CI system — GitHub Actions, GitLab CI, Jenkins, CircleCI. Ang pangunahing prinsipyo ay: bawat test run ay nakakakuha ng natatanging disposable address, pinapatakbo ang mga assertion nito, at awtomatikong nag-e-expire ang address. Walang cleanup script, walang shared mailbox na nagkakalat, walang flaky test na dulot ng mga natirang email mula sa mga nakaraang run.

Ang isang GitHub Actions workflow step ay maaaring ganito ang hitsura: ``` - name: Run email integration tests env: EVILMAIL_API_KEY: ${'{ secrets.EVILMAIL_API_KEY }'} run: pytest tests/email/ -v --timeout=120 ```

Ano ang Dapat I-assert Huwag basta suriin lang na dumating ang email. I-verify ang subject line, ang sender address, ang pagkakaroon ng mahahalagang link (verification URL, reset token), at na ang mga link na iyon ay talagang nagre-resolve sa mga valid na page. Ang isang kumpletong email test ay nagva-validate ng buong chain mula sa trigger hanggang sa delivery hanggang sa correctness ng content.

Pag-scale sa Daan-daang Test Para sa malalaking test suite na nangangailangan ng maraming sabay-sabay na email address, gamitin ang account creation endpoint upang gumawa ng mga address sa ilalim ng sarili mong domain. Nagbibigay ito sa iyo ng buong kontrol sa namespace at iniiwasan ang anumang rate limiting sa temp-email endpoint: ``` curl -X POST https://evilmail.pro/api/accounts \ -H 'X-API-Key: '"$EVILMAIL_API_KEY" \ -H 'Content-Type: application/json' \ -d '{"email": "[email protected]", "password": "testpass"}' ```

Pagkatapos ng test suite, burahin nang maramihan ang mga test account: ``` curl -X DELETE https://evilmail.pro/api/accounts \ -H 'X-API-Key: '"$EVILMAIL_API_KEY" \ -H 'Content-Type: application/json' \ -d '{"emails": ["[email protected]"]}' ```

Ang Buod Hindi dapat ang email testing ang marupok na afterthought sa iyong test suite. Gamit ang tamang disposable email API, nagiging kasing-deterministic at kasing-reliable ito ng kahit anong integration test. Mag-ship nang may kumpiyansa na talagang gumagana ang iyong mga email.

Mga Kaugnay na Artikulo