MoeMail
返回博客

自动化邮箱验证测试(Playwright、Cypress、Selenium)

注册和找回密码流程是出了名地难测,因为最关键的一步——那封验证邮件——会跳出你的应用。解决办法是:给每一次测试运行配一个它自己能用代码读取的一次性收件箱。本指南演示这套套路在 Playwright、Cypress 和 Selenium 里怎么落地,底层依托一套一次性邮箱 API

为什么邮件测试容易飘

邮件是异步的:它要穿过一连串 SMTP 服务器,可能要好几秒才到,而测试却期待快速、确定的结果。多次运行共用同一个人工邮箱,还会造成串扰和陈旧邮件。解药是按需创建邮箱——每个测试现开一个全新、可达的地址,再通过 API 消费它收到的邮件。

这套套路

  1. 在测试开头开出一个临时邮箱(随机或自定义地址)。
  2. 驱动界面走到触发验证邮件的那一步。
  3. 等待邮件到来——轮询收件箱,或者响应一个 Webhook 以实现零延迟投递。
  4. 从邮件正文里提取验证链接或一次性验证码。
  5. 继续流程(点链接 / 填验证码)并断言成功。

保持 DRY:写一个可复用的助手

别把收件箱 API 调用零散地撒在每个测试文件里。把“创建 / 等待 / 提取”包进一个模块:一个 Playwright fixture、一个 Cypress 自定义命令,或一个 Selenium 助手类。这样测试读起来就像“开收件箱、注册、等验证、断言”——传输细节不会渗进断言里。

各框架要点

  • Playwright——把助手暴露成 fixture,让每个测试自动拿到全新收件箱;等邮件时用 web-first 的 expect.poll
  • Cypress——把 API 调用包进 cy.task 或自定义命令里;别用随手写的 cy.wait,改成轮询直到邮件到来。
  • Selenium——把创建/轮询/提取放进一个页面对象风格的助手里,并对邮件用显式等待。

提升可靠性的小技巧

优先用 Webhook 而不是紧凑轮询,以削减延迟和请求数。给每次运行一个唯一地址,并行测试就永远不会撞车。大型套件里盯着你每月的 API 配额——能安全复用时就在多个断言间复用同一收件箱,并把轮询间隔往后放一放。每个调用都要用放在 X-API-Key 请求头里的 API 密钥鉴权。

立即开始

从个人资料里取一个 API 密钥,读一读 OpenAPI 文档,先接一个 fixture 出来——它负责开一个收件箱并等一封邮件。还不熟悉一次性收件箱?从什么是临时邮箱开始。