携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
当我们搭建好测试环境并且执行完自动化用例之后,会生成测试报告,但是如果是下班之后执行一遍,要第二天上班才能看得到结果,这是我们可以用到测试报告以邮件的方式自动发送给测试人员,这时我们不管身处何地,只要打开邮箱就可以看到自动化测试的结果。
首先发邮件操作是属于第三方模块,所以我们先得把包导好:
import yagmail
import smtplib
import logging
from email.header import Header
from email.mime.text import MIMEText
发送邮箱有两种方法,一种是属于python自带的,第二种是需要导入第三方模块的,具体内容如下:
def email(self,title,report):
#第一种方法
with open(report, 'r', encoding='utf8') as f:
mail_body = f.read() # 打开测试报告,读取报告内容作为邮件内容
sender = '这里填写发出邮箱号' # 发出邮箱
receiver = '接受测试报告的邮箱号' # 接收邮箱
mail_server = 'smtp.163.com' # 邮箱服务地址
subject = title # 邮件标题
username = '用户名' # 邮箱登录名
passwd = '密码' # 密码(需要在163邮箱设置中授权)
message = MIMEText(mail_body, 'html', 'utf-8') # 设置邮件格式
message['Subject'] = Header(subject, charset='utf-8')
# 邮箱登录
smtp = smtplib.SMTP() # 实例化smtplib.SMTP()类对象
smtp.connect(mail_server) # 连接邮件服务器
smtp.login(username, passwd) # 登录
# 发送邮件
smtp.sendmail(sender, receiver, message.as_string())
self.getlog().info('邮箱:' + receiver + ',发送邮件成功!\n') # 打印log
smtp.quit()
第二种方法:
连接邮箱服务器 发送方邮箱+授权码+邮箱服务地址
yag = yagmail.SMTP(user='邮箱号', password='密码', host='smtp.163.com', encoding='GBK')
# 邮件正文 支持html,支持上传附件(填写在任意位置皆可)
# 1. 上传附件
content = ['以下是自动化测试报告,请查收。', rf'{report}', '......']
# 2. 不上传附件
# content = ['以下是自动化测试报告,请查收。']
# 发送的几种方式 发送方+主题+内容
# 1. 单个用户不带附件
# yag.send('邮箱号', title, content)
# 2. 单个用户,添加附件
yag.send('xxxxxx@163.com', f'{title}', content, rf'{report}')
# 3. 多个用户,多个附件
# yag.send(['woshijieshoufang1@qq.com', 'woshijieshoufang2@163.com'], u'自动化测试报告', content,
# [r'E:\test\test.xlsx', r'E:\test\abc.jpg', r'E:\test\test.txt'])
self.getlog().info('发送邮件成功!\n') # 打印log
yag.close()
以上两种方法都是以163邮箱为例子,如果是其他邮箱需要更换服务器。第二种方法相对于第一种的话是比较简单的,所以平常的话我可能更喜欢用第二种。这里需要注意的是这里的密码不是你的邮箱密码,而是在163邮箱设置中授权后的自动化登录的密码,同时还需要添加登录设备才能够发送。