23 Star 244 Fork 60

伯庸/接口测试和ui自动化测试通用框架

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
get_allure_data.py 2.97 KB
一键复制 编辑 原始数据 按行查看 历史
伯庸 提交于 2024-06-26 13:51 +08:00 . 优化 job
# -*- coding: utf-8 -*-
# -------------------------------
# @文件:get_allure_data.py
# @时间:2024/4/9 下午4:18
# @作者:caiweichao
# @功能描述:获取 allure 测试报告中的用例数据
# -------------------------------
import json
import os
from config.constants_path import REPORT_PATH
class AllureFileClean:
"""allure 报告数据清洗,提取业务需要得数据"""
@classmethod
def _getAllFiles(cls) -> list:
""" 获取所有 test-case 中的 json 文件 """
filename = []
# 获取所有文件下的子文件名称
for root, dirs, files in os.walk(REPORT_PATH + '/data/test-cases'):
for filePath in files:
path = os.path.join(root, filePath)
filename.append(path)
return filename
def get_testcases(self):
""" 获取所有 allure 报告中执行用例的情况"""
# 将所有数据都收集到files中
files = []
for i in self._getAllFiles():
with open(i, 'r', encoding='utf-8') as fp:
date = json.load(fp)
files.append(date)
return files
def get_failed_case(self):
""" 获取到所有失败的用例标题和用例代码路径"""
errorCase = []
for i in self.get_testcases():
if i['status'] == 'failed' or i['status'] == 'broken':
errorCase.append((i['name'], i['fullName']))
return errorCase
def get_failed_cases_detail(self):
""" 返回所有失败的测试用例相关内容 """
Data = self.get_failed_case()
# 判断有失败用例,则返回内容
if len(Data) >= 1:
values = ""
for i in Data:
values += i[0] + ","
return values
else:
# 如果没有失败用例,则返回False
return ""
@classmethod
def get_case_count(cls):
""" 统计用例数量 """
fileName = REPORT_PATH + '/history/history-trend.json'
with open(fileName, 'r', encoding='utf-8') as fp:
date = json.load(fp)[0]['data']
return date
class CaseCount:
def __init__(self):
self.AllureData = AllureFileClean()
self.total_cases = self.AllureData.get_case_count()['total']
self.pass_case = self.AllureData.get_case_count()['passed']
self.fail_case = self.AllureData.get_case_count()['failed']
self.broken_case = self.AllureData.get_case_count()['broken']
self.skipped_case = self.AllureData.get_case_count()['skipped']
def passRate(self):
"""用例成功率"""
# 四舍五入,保留2位小数
try:
if self.total_cases() != 0:
passRate = round(self.pass_case() / (self.total_cases() - self.skipped_case()) * 100, 2)
else:
passRate = round(self.pass_case() / self.total_cases() * 100, 2)
return passRate
except ZeroDivisionError:
return 0.00
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/by_cwc/GuardianAutoTestFramework.git
git@gitee.com:by_cwc/GuardianAutoTestFramework.git
by_cwc
GuardianAutoTestFramework
接口测试和ui自动化测试通用框架
master

搜索帮助