基于Python脚本输入 按Test_Status条件变更Outlook文本颜色
解决方案:根据Test_Status动态设置Outlook邮件正文文本颜色
核心思路
通过Python定义测试状态与颜色的映射关系,动态生成带样式的HTML邮件正文,再通过Outlook客户端发送。
步骤实现
- 定义状态-颜色映射规则
用字典统一管理不同状态对应的颜色值,便于后续维护修改:
status_color_map = { "blocked": "#FFA500", # 橙色 "passed": "#008000", # 绿色 "failed": "#FF0000" # 红色 }
- 动态生成HTML邮件正文
针对你提供的邮件模板结构,将需要变色的文本用带样式的<span>标签包裹,通过字符串格式化插入动态颜色值:
<html> <body> <h2>自动化测试报告</h2> <p>测试执行状态:<span style="color: {color}; font-size: 16px; font-weight: bold;">{status}</span></p> <p>测试详情:...</p> </body> </html>
- 完整Python脚本示例
使用pywin32库操作Outlook客户端,实现动态邮件生成与发送:
import win32com.client as win32 # 状态-颜色映射 status_color_map = { "blocked": "#FFA500", "passed": "#008000", "failed": "#FF0000" } # 测试脚本输出的Test_Status变量 Test_Status = "failed" # 获取对应颜色,默认黑色作为兜底方案 text_color = status_color_map.get(Test_Status, "#000000") # 构建带动态样式的HTML正文 html_body = f""" <html> <body> <h2>自动化测试报告</h2> <p>测试执行状态:<span style="color: {text_color}; font-size: 16px; font-weight: bold;">{Test_Status.upper()}</span></p> <p>测试用例总数:100</p> <p>通过数:85 | 失败数:10 | 阻塞数:5</p> </body> </html> """ # 初始化Outlook并创建邮件 outlook_app = win32.Dispatch('Outlook.Application') mail_item = outlook_app.CreateItem(0) # 配置邮件信息 mail_item.Subject = f"【测试通知】{Test_Status.upper()} - 自动化测试执行结果" mail_item.HTMLBody = html_body mail_item.To = "test_team@example.com" mail_item.CC = "manager@example.com" # 可选:调试时显示邮件,正式场景替换为mail_item.Send()直接发送 mail_item.Display()
注意事项
- 确保已安装
pywin32库,可通过命令pip install pywin32完成安装 - 若原始HTML模板更复杂,只需将需要变色的目标文本用
<span style="color: {text_color};">...</span>包裹,再通过f-string替换颜色值即可 - 若无需依赖Outlook客户端,可改用
smtplib发送HTML邮件,核心的颜色动态替换逻辑保持一致
内容的提问来源于stack exchange,提问作者Bharath
相关产品推荐
相关产品推荐

