大家在做python自动化的时候,都有这么一个需求,希望自动将测试报告发送到邮箱,关于实现自动发送邮件,我们可以采用jenkins来实现,同样也可以通过python来实现。
web自动化测试:https://www.bilibili.com/video/BV1MS4y1W79K/
其实也很简单,通过python中smtp和email的官方库,就可以完成发送邮件这件事情。发送邮件需要使用到smtp服务,如果公司没有可以使用第三方邮箱的smtp服务,如qq,163等,当时用qq或163时需要提起开启邮箱的smtp服务。
开启邮箱SMTP服务
刚刚说到发送邮件需要使用SMTP服务器,常用的免费服务器有:163、126、QQ,接下来以163邮箱为例给大家将一下如何开启smtp服务,注意开启过程中设置的授权码非常重要,是用来登录smtp服务器的,一定要记住。
注册163邮箱,登录后设置。
在新页面中点击“客户端授权密码”,勾选“开启”,弹出新窗口填写手机验证码。
填写授权码
提示开启成功
使用python发送邮件
python发送邮件需要使用smtplib email这两个官方库。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
发送普通的邮件
实现步骤:
第一步:创建一个SMTP的对象,连接到SMTP服务器
# 163邮箱的smtp服务器地址为:smtp.163.com,端口为:25
s = smtplib.SMTP("smtp.163.com" , 25)
第二步:登录SMTP服务器
mail_user = "邮箱账号" # 用户名
mail_pass = "授权码" # 密码
smtp.login(mail_user, mail_pass)
第三步::构建邮件内容
# 构建邮件内容
content = '本次测试通过率为88%'
# 主题:
Subject = "2023/3/21测试报告"
# 发件人
From = '[email protected]'
# 收件人
To = "测试人员"
# 创建一个邮件
message = MIMEText(content, 'plain', 'utf-8')
# 添加邮件主题
message['Subject'] = Header(Subject, 'utf-8')
# 添加发件人
message['From'] = From
# 添加收件人
message['To'] = To
第五步:发送邮件
# 发送邮件
smtp.send_message(msg=msg,from_addr="收件人邮箱地址",to_addrs="收件人邮箱地址")
一封普通的邮件发送步骤如上所示,但是邮件如果要带附件呢,比如将测试报告作为附件进行发送。应该怎么发送?代码为大家整理好了,参考如下:
发送带附件的邮件
带附件的邮件,完整代码如下
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
# 第一步: 连接到smtp服务器
smtp = smtplib.SMTP_SSL(host='smtp.163.com',port=465)
# 第二步:登录smtp服务器
smtp.login(user='邮箱账号',password='授权码')
# 第三步构建一封带附件的邮件
# 创建一封多组件的邮件
msg = MIMEMultipart()
# 添加发件人
msg['From'] = "[email protected]"
# 添加收件人
msg['To'] = "xxx"
# 添加主题
msg['Subject'] = Header("带附件的测试邮件",charset='utf8')
# 添加邮件文本内容
# 创建邮件文件内容对象
text_content = MIMEText("这封邮件是用来测试发送是否成功的,邮件中添加了测试报告的附件",_charset='utf8')
# 把邮件的文本内容,添加到多组件的邮件中
msg.attach(text_content)
# 添加附件
f_msg = open('报告文件','rb').read()
app = MIMEApplication(f_msg)
app.add_header('content-disposition', 'attachment', filename='python.html')
msg.attach(app)
# 发送邮件
smtp.send_message(msg=msg,from_addr="发件人邮箱地址",to_addrs="收件人邮箱地址")
大家只需要对上述代码进行一下封装就可以应该到我们自动化项目中了,当自动化脚本执完之后,调用发送邮件的方法,将报告作为附件发送出去。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
不管什么样的打击和失败降临,一个真正坚强的人都能够从容应对,做到临危不乱。当暴风雨来临,软弱的人屈服了,而真正坚强的人镇定自若,胸有成竹。
生于忧患,死于安乐。如果你想跨越自己目前的成就,就不能画地自限,而是要勇于接受挑战。对畏畏缩缩的人来说,真正的危险正在于不敢冒险!
击败不等于击倒,跌倒了,爬起来,想一想,为什么跌倒了,然后继续努力,把让自己跌倒的石头搬掉或绕过去,不就解决问题了吗?