现在钉钉机器人不支持发送本地图片,暂时先不发送报告图片到钉钉
我看过报告下的一些文件信息,这个文件的信息可以用来统计
suites.csv文件信息
结构如下:
excel打开文件如下:
代码实现:如下:(我这边是直接封装到类里面,)
#!/usr/bin/env python
# encoding: utf-8
# @author: lican
# @file: dingding_utiles.py
# @time: 2022/7/14 11:17
'''发送接口测试信息推送钉钉消息'''
import csv
import json
import requests
class DingdingUtiles():
def __init__(self,case_path):
self.case_path = case_path #报告存放的地址 suites.csv #..reportshtml_reportsdatasuites.csv
self.data_deposit = [] #数据存储
self.api_run_count = 0 #总数
self.api_passed_count = 0 #失败数
self.api_failed_count = 0 #成功数
self.failed_case_name = [] #接口名称
self.failed_case_path = [] #接口地址
def primary_data(self):
self.data_deposit = [] #a
#
file_name = csv.reader(open(self.case_path, 'r', encoding='UTF8'))
for i in file_name:
if i[0] != 'Status':
self.data_deposit.append(i)
# print(self.data_deposit)
# 对原始数据坐下处理
self.api_run_count = len(self.data_deposit)
# api_passed_count = 0
# api_failed_count = 0
# failed_case_name = []
# failed_case_path = []
for i in self.data_deposit:
if i[0] == 'passed': # 成功
self.api_passed_count += 1
#成功不需要打印接口名称
# failed_case_path.append(i[1])
# failed_case_name.append(i[9])
elif i[0] == 'failed':
# failed_case_path.append(i[1])
self.failed_case_name.append(i[9])
self.api_failed_count += 1
# print(self.api_run_count)
# print(self.api_passed_count)
# print(self.api_failed_count)
# print(self.failed_case_name)
# print(self.failed_case_path)
def dd_push(self):
self.primary_data() #运行
HEADERS = {"Content-Type": "application/json;charset=utf-8"}
url = f"https://oapi.dingtalk.com/robot/send?access_token=钉钉机器人的地址复制过来"
# content里面要设置关键字 我机器人设置的关键字为'接口测试结果:'
data_info = {
"msgtype": "text",
"text": {
"content": "接口测试结果:" + f'n总共运行{self.api_run_count}条用例'
+ f'n成功{self.api_passed_count}条用例'
+ f'n失败{self.api_failed_count}条用例'
+ f'n失败用例名称{str(self.failed_case_name)}'
# + f'n失败用例地址{str(failed_case_path)}'
},
"isAtAll": False
# 这是配置需要@的人
# ,"at": {"atMobiles": ["15xxxxxx06",'18xxxxxx1']}
}
value = json.dumps(data_info)
response = requests.post(url, data=value, headers=HEADERS)
if response.json()['errmsg'] != 'ok':
print(response.text)
if __name__ == '__main__':
index_case_path = r'..reportshtml_reportsdatasuites.csv' # 测试报告
DingdingUtiles(index_case_path).dd_push()
运行所有用例的接口直接调用这个类方法:如下图
DingdingUtiles( #测试报告存放地址).dd_push()
测试结果如下图:
暑期编程PK赛 得CSDN机械键盘等精美礼品!


