前言
每当测试结束后,测试人员都会输出一份详细的测试报告给到领导或者组内人员,那么当我们自动化测试结束后的时候,也可以让其自动发送测试报告。
这样领导和组内的成员就能看到自动化测试每次测试的内容了。安静先介绍下如何通过Python发送邮件,再通过简单的小例子在自动化测试过程中自动发送报告。
smtplib
smtplib是属于Python发送邮件的一个库。其简单的原理是通过SMTP的方式来实现发送报告的。SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
smtplib中对其SMTP的协议进行了一个封装,其中email是用来支持发送文本、图片和携带附件等功能。
登录邮箱
发送邮件前肯定需要登录邮箱了,这里安静先通过163的邮箱进行介绍,登录是通过smtplib这个库进行来完成的。
这里需要先确认发件人的邮箱是否开通了SMTP邮箱权限,可以登录到163邮箱中,选择SMTP/IMAP中选择开启SMTP服务。勾选后进行连接登录:
import smtplib
# 创建smtplib服务
smtp = smtplib.SMTP()
# 服务器地址
smtpserver = 'smtp.163.com'
# 发送账号
user = '[email protected]'
# 发送密码
password = 'xxxxxxx'
# 收件人
receivers = '[email protected]'
# 连接服务器
smtp.connect(smtpserver)
# 登录邮箱账号
smtp.login(user, password)
邮件发送类型
邮件发送通过Python中的email的库来实现的,其中email发送邮件可以支持多类型,比如纯文本、纯图片、文本加附件等方法,这里安静会一个个进行介绍。
文本发送
发送邮件肯定包含,发送人,收件人,邮件标题,邮件内容等内容,这里 email 中的Mimetext 的方法可以帮助我们实现发送纯文本内容。
import smtplib
from email.mime.text import MIMEText
# 创建 smtplib 服务
smtp = smtplib.SMTP()
# 服务器地址
smtpserver = 'smtp.163.com' # 发送账号
user = '[email protected]' # 发送密码
password = 'xxxxxxx' # 收件人
receivers = '[email protected]' # 邮件标题
subject = '自动化测试报告' # 发送内容 (文本内容,发送格式,编码格式)
message = MIMEText('这是测试文本内容,自动化测试通过', 'html', 'utf-8')
# 发送地址
message['From'] = user
# 接收地址
message['To'] = receivers
# 邮件标题
message['subject'] =subject
# 连接服务器
smtp.connect(smtpserver)
# 登录邮箱账号
smtp.login(user, password)
# 发送账号信息
smtp.sendmail(user,receivers,message.as_string())
# 关闭
smtp.quit()
通过执行后可以发现,QQ 邮箱已经成功的收到了邮件信息。
图片发送
正常发送邮件只需要将邮件全部都复制粘贴到邮件中就行了。但是这里我们通过python 进行发送邮箱,需要用到 email 中的 MIMEimage 的模块了。这个模块可以帮助我们将我们需要的图片内容添加到邮件中,需要我们将本地的图片导入到 html 中,通过 html中进行发送,如果你通过链接的形式发送会失败,邮件会识别成恶意链接,从而进行拦截。这里安静这接在上面的代码中进行加入 HTML 格式,将图片嵌套在 html 文本中发送。
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
# 创建 smtplib 服务
smtp = smtplib.SMTP()
# 服务器地址
smtpserver = 'smtp.163.com' # 发送账号
user = '[email protected]' # 发送密码
password = 'xxxxxx' # 收件人
receivers = '[email protected]' # 邮件标题
subject = '自动化测试报告中加入图片' # 发送内容 (文本内容,发送格式,编码格式)
text = '''
自动化测试报告中带图片''' message = MIMEMultipart()
body = MIMEText(text, 'html', 'utf-8')
f = open('123.jpg','rb')
mag = MIMEImage(f.read())
f.close()
# 定义图片 ID 在 HTML 中展示
mag.add_header('Content-ID', 'anjing')
# 添加图片信息
message.attach(mag)
# 添加正文
message.attach(body)
# 发送地址
message['From'] = user
# 接收地址
message['To'] = receivers
# 邮件标题
message['subject'] =subject
# 连接服务器
smtp.connect(smtpserver)
# 登录邮箱账号
smtp.login(user, password)
# 发送账号信息
smtp.sendmail(user,receivers,message.as_string())
# 关闭
smtp.quit()
通过执行上面的代码可以看到 QQ 邮箱,已经接收到了邮件信息,打开邮箱清楚的看到,图片已经在文本中添加了。
最后:
可以我的个人V:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。
这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!