如果要完整实现自动化测试,需要把项目测试的结果数据等,通过发送电子邮件的方式,通知需要看到测试报告的用户。
想要使用代码发送邮件,首先要对邮箱进行设置:即设置邮箱授权码。
(1)设置163邮箱
第一次设置授权码:登录163邮箱 —> 设置 —> POP3/SMTP/IMAP —> 设置授权码。
第n次设置授权码: 登录163邮箱 —> 设置 —> POP3/SMTP/IMAP —> 在界面左侧栏中有客户端授权码选项 —> 重置授权码。
找到QQ邮箱授权码,打开QQ邮箱 —> 设置 —> 账号 —> POP3开启服务 —> 开启
(如果已经开启了,不知道授权码,就点温馨提示里面的‘生成授权码’)
发验证短信获取授权码,照着提示发个短信,点我已发送,就会收到授权码了。
收到授权码后复制,保存下来,这个就可以当QQ邮箱的密码了。
我们需要适用Python中的zmail模块,来实现邮件的发送。
首先在cmd命令行中,执行如下命令,来安装zmail模块。
pip install zmail或者python -m pip install zmail
提示:在Python中适用zmail模块比使用smtplib库更加方便。
"""
使用python的zmail模块实现发送邮件
1.安装zmail库
pip install zmail
python -m pip install zmail
2.设置邮箱的授权码
3.发邮件
1.编辑邮件内容
2.填写发件人邮箱和授权码
3.发送邮件
"""
import zmail
# 1.准备发送邮件的内容(字典格式)
# 注意subject少用测试或者test,邮箱会自动屏蔽,多了还会拉黑你。
mail_content = {
"subject": "邮件主题",
"content_text": "邮件内容,邮件正文",
"attachments": "../data/add_dep.xls" # 邮件附件(路径)
}
# 2.使用发送邮件的账户和密码,密码是授权码
server = zmail.server("[email protected]", "xxxxxxx123456")
"""
说明:
关于邮客户端设置的POP3,SMTP,IMAP地址,
zmail模块都帮助我们设置好了
点击zmail.server()方法即可查看,如下:
def server(username: str, password: str,
smtp_host: Optional[str] = None,
smtp_port: Optional[int] = None,
smtp_ssl: Optional[bool] = None,
smtp_tls: Optional[bool] = None,
pop_host: Optional[str] = None,
pop_port: Optional[int] = None,
pop_ssl: Optional[bool] = None,
pop_tls: Optional[bool] = None,
config: Optional[str] = None,
timeout=60, debug=False, log: Optional[logging.Logger] = None,
auto_add_from=True, auto_add_to=True) -> MailServer:
"""
# 3.发送邮件
# 参数:收件人,邮件内容
server.send_mail("[email protected]", mail_content)
# 给多人发送邮件
# server.send_mail([收件人1, 收件人2], 邮件内容)
这可以把html格式的测试报告,作为邮件的正文进行发送。
同时也可以把测试报告作为附件一起发送。
# 导入zmail模块
import zmail模块
# 发送HTML作为邮件内容
# 1.读取html文件
with open("report.html", "r", encoding="utf-8") as fp:
content_html = fp.read()
# 2.准备发送邮件的内容(字典格式)
mail_content = {
"subject": "自动化测试报告",
"content_html": content_html,
"attachments": "report.html"
}
# 3.使用发送邮件的账户和密码,密码是授权码
server = zmail.server("[email protected]", "xxxxxxx123456")
# 4.发送邮件
# 参数:收件人,邮件内容
server.send_mail("[email protected]", mail_content)
注意:
zmail.read_html()可以读取html文件,但是read_html()方法读入纯英文的页面没有问题。但读取带有中文的页面,就会报错,因为没有做编码处理。
所以我们会使用open()方法来读取html中的内容。
我们也可以把源码中的read_html()方法修改一下,加上编码即可,如下:
def read_html(html_path: str):
"""Get html content by its path."""
path = get_abs_path(html_path)
with open(path, 'r', encoding="utf-8") as f:
content = f.read()
return content
修改完之后就可以用下面代码,代替上面的1,2步了。
mail_content = {
"subject": "自动化测试报告",
"content_html": zmail.read_html("../report/report.html"),
"attachments": "report.html"
}
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
关注我的微信公众号:【伤心的辣条】免费获取~
我的学习交流群:902061117 群里有技术大牛一起交流分享~
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
阿里小黑叹息:越来越多的年轻人从职场撤退了?
Python简单?先来40道基础面试题测试下
App公共测试用例梳理
从一名开发人员转做测试的一些感悟