टेस्ट एनवायरनमेंट सेटअप करना
ईमेल वेरिफिकेशन फ़्लो को मैन्युअली टेस्ट करना धीमा, त्रुटि-प्रवण और स्केलेबल नहीं है। समाधान यह है कि पूरी प्रक्रिया को डिस्पोजेबल ईमेल एड्रेस का उपयोग करके ऑटोमेट किया जाए जिन्हें ऑन-डिमांड बनाया और हटाया जा सकता है।
शुरू करने के लिए, आपको चाहिए:
- एक EvilMail API कुंजी
- Python 3.8+ इंस्टॉल
- requests लाइब्रेरी
pip install requests pytestAPI के ज़रिए टेस्ट ईमेल बनाना
पहला कदम है प्रत्येक टेस्ट केस के लिए एक डिस्पोजेबल ईमेल एड्रेस जनरेट करना:
curl -X POST https://evilmail.com/api/temp-email
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{"domain": "evilmail.com", "prefix": "test-signup"}'API एक यूनिक ईमेल एड्रेस लौटाती है जो तुरंत संदेश प्राप्त करने के लिए तैयार है।
इनबॉक्स को मॉनिटर करना
अपनी एप्लिकेशन के वेरिफिकेशन फ़्लो को ट्रिगर करने के बाद, आपको इनबॉक्स को तब तक मॉनिटर करना होगा जब तक वेरिफिकेशन ईमेल न आ जाए:
curl -X GET https://evilmail.com/api/inbox/[email protected]
-H "Authorization: Bearer YOUR_API_KEY"Python उदाहरण: wait_for_email
यहाँ timeout और polling के साथ वेरिफिकेशन ईमेल की प्रतीक्षा करने के लिए एक मज़बूत फ़ंक्शन है:
import requests
import time
def wait_for_email(address, api_key, timeout=60, interval=2):
"""निर्दिष्ट इनबॉक्स में ईमेल आने की प्रतीक्षा करता है।"""
url = f"https://evilmail.com/api/inbox/{address}"
headers = {"Authorization": f"Bearer {api_key}"}
deadline = time.time() + timeout
while time.time() < deadline:
response = requests.get(url, headers=headers)
response.raise_for_status()
messages = response.json().get("messages", [])
if messages:
return messages[0]
time.sleep(interval)
raise TimeoutError(
f"{address} पर {timeout} सेकंड के बाद कोई ईमेल प्राप्त नहीं हुआ"
)
# एक टेस्ट में उपयोग
def test_signup_verification():
# 1. अस्थायी ईमेल बनाएँ
resp = requests.post(
"https://evilmail.com/api/temp-email",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"domain": "evilmail.com", "prefix": "test-signup"}
)
email = resp.json()["email"]
# 2. अपनी एप्लिकेशन पर यूज़र रजिस्टर करें
requests.post("https://yourapp.com/signup", json={
"email": email,
"password": "TestPassword123!"
})
# 3. वेरिफिकेशन ईमेल की प्रतीक्षा करें
message = wait_for_email(email, "YOUR_API_KEY")
# 4. वेरिफिकेशन लिंक निकालें और पुष्टि करें
assert "verify" in message["body"].lower()
assert message["subject"] is not NoneGitHub Actions CI/CD इंटीग्रेशन
ईमेल वेरिफिकेशन टेस्ट को अपनी CI/CD पाइपलाइन में GitHub Actions के साथ इंटीग्रेट करें:
name: Email Verification Tests
on: [push, pull_request]
jobs:
test-email-flows:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: pip install requests pytest
- name: Run email verification tests
env:
EVILMAIL_API_KEY: ${{ secrets.EVILMAIL_API_KEY }}
run: pytest tests/test_email_verification.py -vAssertions और Validations
प्रभावी ईमेल वेरिफिकेशन टेस्ट को ये मान्य करने चाहिए:
- अपेक्षित समय के भीतर ईमेल की डिलीवरी
- सही विषय और प्रेषक
- बॉडी में एक वैध वेरिफिकेशन लिंक की उपस्थिति
- वेरिफिकेशन लिंक का सही ढंग से काम करना
- वेरिफिकेशन के बाद अकाउंट का सक्रिय होना
सैकड़ों टेस्ट तक स्केल करना
अपनी टेस्ट सूट को स्केल करते समय, इन बातों पर विचार करें:
- यूनिक प्रीफ़िक्स: टकराव से बचने के लिए ईमेल प्रीफ़िक्स में timestamps या UUIDs का उपयोग करें
- पैरेलल एक्ज़ीक्यूशन: समानांतर में टेस्ट चलाने के लिए pytest-xdist कॉन्फ़िगर करें
- Rate limiting: API सीमाओं का सम्मान करें और exponential backoff लागू करें
- सफ़ाई: एनवायरनमेंट को साफ़ रखने के लिए टेस्ट के बाद अस्थायी एड्रेस हटाएँ
# 8 टेस्ट समानांतर में चलाएँ
pytest tests/test_email_verification.py -n 8 --dist=loadfileइस दृष्टिकोण के साथ, आप अपनी CI/CD पाइपलाइन में सैकड़ों ईमेल वेरिफिकेशन टेस्ट विश्वसनीय और कुशलता से चला सकते हैं।

