前言:
对于自动化测试来说,如果集成jenkins之后,会有一个定时任务批跑,每天定时几点执行,那这时执行结果的显示就很重要,对于领导或者自己来说,不需要每次都点击自动化执行的报告去查看详情,只需要关注 总共执行的测试用例和成功执行的测试用例或者失败的测试用例即可,如果都是成功的,就不需要关注报告了,如果发现某个失败了,再去关注具体的测试报告,这样一来就大大的节省了时间。
那首先,我们先要读取自动化生成的html报告,获取报告中执行的总用例数据和成功的总用例数
import re
from dingtalkchatbot.chatbot import DingtalkChatbot
import time
import sys
import os
class DingTalk:
# 定一个参数:html_path,每次调用此方法时要穿这个参数
def read_report(self, html_path):
# 打开这个html文件,并存在变量 f 中
f = open(html_path, 'r', encoding='utf-8')
# 将html读取后存在变量 html中
html = f.read()
# 将上边读取的结果中筛选 所有span标签的数值,这个点要着重讲一下,筛选的值
#要具体看你报告的情况,因为我的报告测试用例总数和成功数是存在span标签中,所以
#我筛选的是这样,你们的要具体看自己的,具体怎么筛选可以百度一下,html格式
#如何读取
table = re.findall(r'<span>(.*?)</span>', html, re.S)
# 这是获取第二个值就是用例总数
all_case = table[1]
# 这是获取第五个值是用例成功的数
success_case = table[4]
# 然后将结果拼接后 返回出去
return {"本次共执行用例总数": all_case,
"执行成功用例": success_case}
def send_dingtalk(self):
# 获取路径,目的是找到report.html文件的路径
path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) # 获取当前路径
html_path = os.path.join(path, "reports/report.html") # 获取html格式报告文件的路径
tile = time.strftime("%Y-%m-%d %H:%M:%S")
# WebHook地址,你钉钉上创建自定义机器人时生成的值
webhook = '你的webhook地址'
# 初始化机器人小丁
xiaoding = DingtalkChatbot(webhook)
ding = DingTalk()
xixi = ding.read_report(html_path)
xiaoding.send_text(
# Qa-审核后台自动化是机器人的关键字,必须要保持一致
msg='Qa-审核后台自动化\n\n'+ str(xixi) + "\n\n项目url:**/" + "\n\n执行时间:" +tile
)
if __name__ == '__main__':
ding = DingTalk()
ding.send_dingtalk()
效果如下: