如何通过Python发送邮件实现自动化测试报告?

前言

每当测试结束后,测试人员都会输出一份详细的测试报告给到领导或者组内人员,那么当我们自动化测试结束后的时候,也可以让其自动发送测试报告。

这样领导和组内的成员就能看到自动化测试每次测试的内容了。安静先介绍下如何通过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 = 'XXXXXXXX@163.com'

# 发送密码

password = 'xxxxxxx'

# 收件人

receivers = '821006052@qq.com'

# 连接服务器

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 = 'xxxxxxx@163.com' # 发送密码

password = 'xxxxxxx' # 收件人

receivers = '821006052@qq.com' # 邮件标题

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 = 'xxxxxx@163.com' # 发送密码

password = 'xxxxxx' # 收件人

receivers = '821006052@qq.com' # 邮件标题

subject = '自动化测试报告中加入图片' # 发送内容 (文本内容,发送格式,编码格式)

text = ''' <html>

<head>自动化测试报告中带图片</head>

<body>

<p>

<p><img src="cid:anjing"></p>

<p>

</body>

</html>

''' 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自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值