前言:统计的是每个分支最后一个节点的状态
xmind版本 23.0911172
-
标记打开位置
-
标记规则如下
解释:
res = {"total": 0, "pass": 0, "fail": 0, "no_result": 0, "unfinished": 0, "now_fail": 0, "other": 0}
# total= pass + no_result+unfinished+ now_fail +other
# total 用例总数
# pass 通过总数 含有“勾”的用例数
# fail 失败总数 通过总数 含有“感叹号”的用例数
# no_result 未进行任何标记 不含有任何标记的用例数
# unfinished 未完成标记 含有“暂停”的用例数
# now_fail 仍未通过 仅含有“感叹号”的用例数
# other 其它符号标
- 完整代码如下
from xmindparser import xmind_to_dict
import json
# 计算标记
def statistics(data):
res["total"] = res["total"] + 1
# 计算标记图案
if data.get("makers"):
# 至少一个标记
if len(data["makers"]) >= 1:
# 统计现在仍然只有失败标签的用例
if len(data["makers"]) == 1 and data["makers"][0] == "symbol-exclam":
res["now_fail"] = res["now_fail"] + 1
# 遍历标记--所有图标
for i in data["makers"]:
if i == "task-done":
res["pass"] = res["pass"] + 1
elif i == "symbol-exclam":
res["fail"] = res["fail"] + 1
elif i == "task-start":
res["unfinished"] = res["unfinished"] + 1
else:
res["other"] = res["other"] + 1
else: # 没有标记
res["no_result"] = res["no_result"] + 1
def recursion(testcase):
# 递归查询
for i in testcase:
if isinstance(i, dict):
if i.get("topics") is None:
statistics(i)
else:
recursion(i["topics"])
else:
recursion(i)
if __name__ == '__main__':
# 路径
out = xmind_to_dict(r"C:\Users\Administrator\Desktop\测试项目.xmind")
test_case = out[0]["topic"]["topics"]
res = {"total": 0, "pass": 0, "fail": 0, "no_result": 0, "unfinished": 0, "now_fail": 0, "other": 0}
recursion(test_case)
print(res)