如何在Cypress中自动化获取测试触发的Gmail邮件内容?
Gmail 自动化获取邮件内容方案(适配测试场景)
前置准备
- 启用 Gmail 的 IMAP 访问:在 Gmail 设置中开启 IMAP 功能;若账号开启了两步验证,需生成App 密码替代普通登录密码
- 安装必要工具:以 Python 为例,可使用内置的
imaplib和email库,无需额外安装第三方包
测试场景一:密码重置流程集成
- 通过 API 或 UI 操作触发用户密码重置请求
- 自动获取重置密码邮件并提取链接
import imaplib import email from email.header import decode_header def extract_reset_link(gmail_user, gmail_pass): # 连接 Gmail IMAP 服务器 imap = imaplib.IMAP4_SSL("imap.gmail.com") imap.login(gmail_user, gmail_pass) imap.select("INBOX") # 搜索未读的重置密码邮件(按主题筛选,可根据实际邮件主题调整) status, msg_ids = imap.search(None, 'UNSEEN', 'SUBJECT "密码重置请求"') latest_msg_id = msg_ids[0].split()[-1] # 获取邮件原始内容并解析 status, msg_data = imap.fetch(latest_msg_id, "(RFC822)") msg = email.message_from_bytes(msg_data[0][1]) # 提取纯文本正文 body = "" if msg.is_multipart(): for part in msg.walk(): if part.get_content_type() == "text/plain": body = part.get_payload(decode=True).decode() break else: body = msg.get_payload(decode=True).decode() # 提取重置链接(根据实际链接格式调整匹配规则) reset_link = [line.strip() for line in body.split("\n") if "/reset-password?" in line][0] imap.close() imap.logout() return reset_link - 使用提取到的重置链接完成密码重置操作
- 验证新密码登录成功
测试场景二:添加成员邮件验证
管理员确认邮件验证
- 复用上述 IMAP 连接逻辑,筛选主题为"成员添加确认"的未读邮件
- 解析邮件正文,验证其中的新成员邮箱、角色等信息是否与测试输入一致
新成员邮件验证
- 使用提前准备的测试用新成员 Gmail 账号,通过 IMAP 获取激活/欢迎邮件
- 验证邮件中的激活链接、初始账号提示等内容符合预期
关键注意事项
- 仅使用专门的测试邮箱账号执行自动化操作,避免干扰个人邮箱数据
- 邮件筛选条件(如主题、未读状态)需根据实际业务发送的邮件内容调整
- 若邮件内容为 HTML 格式,可改用
text/html类型提取正文,再通过正则匹配目标内容
内容的提问来源于stack exchange,提问作者ruffainn
相关产品推荐
相关产品推荐

