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

上一篇 / 下一篇  2022-04-24 17:01:32 / 个人分类:自动化测试

前言

每当测试结束后,测试人员都会输出一份详细的测试报告给到领导或者组内人员,那么当我们自动化测试结束后的时候,也可以让其自动发送测试报告。加我VX:atstudy-js 回复“测试”,进入 自动化测试学习交流群~~

这样领导和组内的成员就能看到自动化测试每次测试的内容了。安静先介绍下如何通过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 邮箱,已经接收到了邮件信息,打开邮箱清楚的看到,图片已经在文本中添加了。

添加微信:atstudy-js  或者扫描下方二维码,备注“博客”邀请你进入Python自动化测试学习交流群~


TAG: 软件测试

 

评分:0

我来说两句

Open Toolbar