You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.1 KiB

1 week ago
# -*- coding: utf-8 -*-
"""票 06:e2e-core / e2e-rules 结果与 t05 回归基线对比(判定 ⚠/❌ 无新增)。"""
import io, json, sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
E = r'e:\code\crm-backend-matt\.scratch\opportunity-e2e'
def load(p):
return json.load(open(p, encoding='utf-8'))
def rank(v):
return {'': 0}.get(v, 1) # 非 ✅ 一律 1,只看「由好变坏」
def diff(kind, base_path, cur_path):
b, c = load(base_path), load(cur_path)
bmap = {(r['flow'], r['case']): r['verdict'] for r in b['results']}
cmap = {(r['flow'], r['case']): r['verdict'] for r in c['results']}
worse, better, new_bad, gone = [], [], [], []
for k, v in cmap.items():
bv = bmap.get(k)
if bv is None:
if v != '':
new_bad.append((k, v))
elif rank(v) > rank(bv):
worse.append((k, bv, v))
elif rank(v) < rank(bv):
better.append((k, bv, v))
for k in bmap:
if k not in cmap:
gone.append(k)
print(f'===== {kind} 对比(t05基线 → 本次)=====')
print(f'基线 ⚠/❌ 数: {sum(1 for v in bmap.values() if v != "")};本次: {sum(1 for v in cmap.values() if v != "")}')
print(f'-- 变差 {len(worse)}(回归!)--')
for k, bv, v in worse:
print(f' [{bv}{v}] {k[0]} {k[1]}')
print(f'-- 新增非✅ {len(new_bad)}(新用例非绿,需甄别)--')
for k, v in new_bad:
print(f' [新:{v}] {k[0]} {k[1]}')
print(f'-- 转好 {len(better)}(缺陷修复确认)--')
for k, bv, v in better:
print(f' [{bv}{v}] {k[0]} {k[1]}')
print(f'-- 基线独有(未跑) {len(gone)} --')
for k in gone:
print(f' {k[0]} {k[1]}')
print()
diff('e2e-core', E + r'\e2e-core-result-t05-regression.json', E + r'\e2e-core-result.json')
import os
rules_base = E + r'\e2e-rules-result-t05-regression.json'
rules_cur = E + r'\e2e-rules-result.json'
if os.path.exists(rules_base) and os.path.exists(rules_cur):
diff('e2e-rules', rules_base, rules_cur)
else:
print('e2e-rules 结果待跑')