一、获取测试报告
我们需要将最新生成的测试报告发送到钉钉群,所以需要做两件事:第一件事是获取到最新的测试报告,第二件事就是发送报告到钉钉群。
1、准备工作
你需要创建一个钉钉群,在群里创建自定义机器人,参考文档:https://www.dingtalk.com/qidian/help-detail-20781541.html
记住别公开你的webhook地址哦!!!
将获取最新报告的方法仍然写在until文件下
2、获取最新的html报告
如上文(三)我们所写的,生成测试报告文件名的时候我们都加了时间,所有按时间排序后我们就能拿到最新的文件名。
import os
#获取最新报告的文件名
def new_reportname(report_dir):
# 将测试报告文件夹下的所有文件名作为一个列表返回
lists = os.listdir(report_dir)
# 对所有测试报告按照生成时间进行排序
lists.sort(key=lambda filename: os.path.getmtime(report_dir + filename))
# 获取最新的测试报告
recent = lists[-1]
return recent
拿到文件名后,我们可以发送最新的测试报告了。
二、发送测试报告
1、发送测试报告到钉钉群
此次我们发送的消息类型选的text:
import json
import requests
webhook = '你的webhook地址'
def send_dingding(filename):
headers = {'Content-Type': 'application/json; charset=utf-8'}
data = {
"msgtype": "text",
"text": {
"content": "测试报告:"+ "http://localhost:63342/login_test/report/"+filename
},
"at": {
"atMobiles": [
''
],
"isAtAll": False
}
}
r = requests.post(url=webhook, headers=headers, data=json.dumps(data))
return r
好啦~以上就是发送测试报告到钉钉群,这是我们的最后一步哦。总结一下:我们的接口自动化步骤呢就是:自动化测试用例----测试方法和断言----执行测试方法----生成报告----发送报告over。有问题欢迎评论区留言讨论,我也是测试小白一枚呢,希望和大家共同进步。
我又来更新啦~补充一下发送报告到邮箱吧
2、发送测试报告到邮箱
我在项目下新建了文件:send_report,来放我们发送钉钉send_dingding和发送邮件send_email的方法。
百度很多要么是发送邮件带附件,要么是发送邮件带正文,我们将我们生成的html文件放入附近再加上正文发送出去吧~写之前你需要知道授权码是什么,如何获取授权码。
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
from until.get_report import new_reportname
#报告路径
result_dir = r'测试报告路径和之前一样哦'
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
## 将最新测试报告放附件发送邮件,以qq邮箱为例
def send_email(file_new):
smtpserver = 'smtp.qq.com'
user = '你的邮箱'
#password填写授权码(授权码如何获取大家可以百度一下)
password = ''
sender = '发送人'
receivers = ['收件人']
file = open(file_new,encoding='utf-8').read()
# 三个参数:第一个为文本内容,第二个设置文本格式,第三个 utf-8 设置编码
#邮件正文
text = MIMEText('本次自动化测试结果见附件,请您下载查看~', 'plain', 'utf-8')
#邮件附件
att = MIMEText(file, 'html', 'utf-8')
att["Content-Type"] = "application/octet-stream"
subject = new_reportname(result_dir)
att.add_header('ContenT-Disposition','attachment',filename =subject)
# 将邮件正文和邮件附件都加入到多媒体报告
msgRoot = MIMEMultipart()
msgRoot['Subject'] = subject
msgRoot['From'] = _format_addr(u'某公司测试组 <%s>' % sender)
msgRoot['To'] = _format_addr(u'项目组所有人 <%s>' % receivers)
msgRoot.attach(att) # 将附件加载msg里
msgRoot.attach(text) # 将邮件正文加载msg里
try:
smt = smtplib.SMTP('smtp.qq.com')
smt.ehlo()
smt.starttls()
smt.login(user, password)
smt.sendmail(sender, receivers, msgRoot.as_string())
smt.quit()
print('发送成功')
except Exception as e:
print('发送失败', e)
好啦~发送邮件你也get到了,这套简单的接口自动化就完成啦!!!
如有问题欢迎评论留言,大家一起讨论o~