def generate_report(self, results): """生成评测报告"""
total =len(results)
passed =sum(1for r in results if r.success)
# 计算各项指标
avg_duration =sum(r.durationfor r in results) / total
avg_tokens =sum(r.token_countfor r in results) / total
# 按测试类型分组统计
by_category ={} for r in results:
category = r.test_case.category if category notin by_category:
by_category[category]={"total": 0,"passed": 0}
by_category[category]["total"] +=1 if r.success:
by_category[category]["passed"] +=1
def increment(self, name, value=1): """递增计数指标""" if name notinself.metrics: self.metrics[name]={"type": "counter","value": 0} self.metrics[name]["value"] += value
def record(self, name, value): """记录数值指标""" if name notinself.metrics: self.metrics[name]={"type": "gauge","values": []} self.metrics[name]["values"].append(value)
def get_summary(self): """获取指标摘要"""
summary ={} for name, data inself.metrics.items(): if data["type"]=="counter":
summary[name]= data["value"] else:
values = data["values"]
summary[f"{name}_avg"]=sum(values) / len(values)
summary[f"{name}_max"]=max(values)
summary[f"{name}_min"]=min(values) return summary