通过上述json中的
statistic
参数,分析得到一共执行了4条用例,其中失败的2个,成功的2个,跳过的为0个。这里小编就可以通过python读取json文件将我们的测试结果统计出来了。
# allure报告结果json路径,这里小编直接将路径写死了
file_name = r'D:\test_daily\report\html\widgets\summary.json'
with open(file_name, 'r', encoding='utf-8') as f:
data = json.load(f)
case_json = data['statistic']
case_all = case_json['total'] # 测试用例总数
case_fail = case_json['failed'] # 失败用例数量
case_pass = case_json['passed'] # 成功用例数量
if case_all >= 0:
# 计算出来用例执行成功率
case_rate = round((case_pass / case_all) * 100, 2)
else:
print('未获取到执行结果')
测试用例和测试结果都已经都获取到了,接下来就是将我们的测试结果和报告进行汇总,然后通过钉钉机器人发送到钉钉群中,前面小编已经介绍过如何添加钉钉机器人以及如何发送消息,这里就不在介绍。
首先将生成allure的报告的命令封装完成,后面直接进行运行
def allure_report():
# 运行测试用例,
os.system('pytest test03.py --alluredir ./report/result ')
# 生成allure报告
os.system('allure generate report/result/ -o report/html --clean')
# 自动打开allure报告,固定端口号
os.system('allure serve report/result -p 8210')
将allure报告的结果获取到,和allure的地址直接通过钉钉机器人进行发送
def send_ding():
# allure报告结果json路径
file_name = r'D:\test_daily\report\html\widgets\summary.json'
with open(file_name, 'r', encoding='utf-8') as f:
data = json.load(f)
case_json = data['statistic']
case_all = case_json['total'] # 测试用例总数
case_fail = case_json['failed'] # 失败用例数量
case_pass = case_json['passed'] # 成功用例数量
if case_all >= 0:
# 计算出来当前失败率
case_rate = round((case_pass / case_all) * 100, 2)
else:
print('未获取到执行结果')
# 发送报告内容
text = f"用例通过率:{case_rate}%" \
f"\n执行用例数:{case_all}个" \
f"\n成功用例数:{case_pass}个" \
f"\n失败用例数:{case_fail}个" \
# 这里的路径是我本地的路径,如果项目在服务器上运行,可以更改为服务器地址
f"\n测试报告地址:http://10.72.5.82:9999/index.html"
data = {"msgtype":
"text","text":
{"content":"%s"%text},
"at": {
# 要@的人
"atMobiles": " ",
# 是否@所有人
"isAtAll": False
url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxx'
headers = {'Content-Type': 'application/json'}
r = requests.post(url,headers=headers,data=json.dumps(data))
print(r.status_code)
上述都完成了,进行运行代码执行时候,发现出现了一个问题,由于Allure报告自动打开时,服务没有关闭,导致无法继续执行下面发送钉钉的代码程序,所有这里小编进行通过加入多进程的方式来帮助我们进行运行。下面贴上完整代码
import requests
import os
import json
import multiprocessing
import time
def allure_report():
# 运行测试用例,
os.system('pytest test03.py --alluredir ./report/result ')
# 生成allure报告
os.system('allure generate report/result/ -o report/html --clean')
# 自动打开allure报告
os.system('allure serve report/result -p 4545')
def send_ding():
# allure报告结果json路径
file_name = r'D:\test_daily\report\html\widgets\summary.json'
with open(file_name, 'r', encoding='utf-8') as f:
data = json.load(f)
case_json = data['statistic']
case_all = case_json['total'] # 测试用例总数
case_fail = case_json['failed'] # 失败用例数量
case_pass = case_json['passed'] # 成功用例数量
if case_all >= 0:
# 计算出来当前失败率
case_rate = round((case_pass / case_all) * 100, 2)
else:
print('未获取到执行结果')
# 发送报告内容
text = f"用例通过率:{case_rate}%" \
f"\n执行用例数:{case_all}个" \
f"\n成功用例数:{case_pass}个" \
f"\n失败用例数:{case_fail}个" \
f"\n测试报告地址:http://10.72.5.82:4545/index.html"
data = {"msgtype":
"text","text":
{"content":"%s"%text},
"at": {
# 要@的人
"atMobiles": " ",
# 是否@所有人
"isAtAll": False
url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxx'
headers = {'Content-Type': 'application/json'}
r = requests.post(url,headers=headers,data=json.dumps(data))
print(r.status_code)
if __name__ == '__main__':
# 执行生成allure报告
a = multiprocessing.Process(target=allure_report)
# 执行发送钉钉机器人
b = multiprocessing.Process(target=send_ding)
a.start()
time.sleep(5)
b.start()
直接执行程序后,allure报告自动运行打开,钉钉群中也收到了钉钉机器人的消息内容,点击群里的链接,可以直接进入到allure的测试报告,其中这里的ip地址为本机的ip地址,端口号为生成allure报告时设定。
小编通过一个小的例子介绍了如何通过钉钉机器人发送测试报告以及如何统计allure的测试结果。当然通过钉钉机器人发送allure报告的方法不仅仅这一种,后续小编在继续给大家介绍其他方法。感谢您的阅读,希望能给您带来帮助