fix(acceptance): 验证有限数值指标
This commit is contained in:
@@ -107,6 +107,24 @@ def test_driver_result_must_supply_assertions_metrics_and_zero_exit(tmp_path):
|
||||
runner.ROOT = original_root
|
||||
|
||||
|
||||
def test_driver_result_accepts_finite_nonnegative_float_metrics():
|
||||
base = {
|
||||
"schema": 1,
|
||||
"case_id": "S-09",
|
||||
"status": "PASSED",
|
||||
"assertions": [{"name": "latency", "status": "PASSED"}],
|
||||
"metrics": {"api_p95_ms": 61.4481},
|
||||
"files": [],
|
||||
"revisions": [],
|
||||
}
|
||||
assert runner._validate_driver_result("S-09", base, ("api_p95_ms",)) == []
|
||||
for invalid in (float("nan"), float("inf"), -0.1, True):
|
||||
base["metrics"]["api_p95_ms"] = invalid
|
||||
assert runner._validate_driver_result("S-09", base, ("api_p95_ms",)) == [
|
||||
"RESULT_METRIC_MISSING:api_p95_ms"
|
||||
]
|
||||
|
||||
|
||||
def test_valid_driver_passes_and_its_log_is_redacted(tmp_path):
|
||||
driver = tmp_path / "driver.py"
|
||||
driver.write_text(
|
||||
|
||||
@@ -5,6 +5,7 @@ from __future__ import annotations
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
@@ -377,7 +378,12 @@ def _validate_driver_result(case_id: str, result: Any, required_metrics: tuple[s
|
||||
else:
|
||||
for name in required_metrics:
|
||||
value = metrics.get(name)
|
||||
if not isinstance(value, int) or isinstance(value, bool) or value < 0:
|
||||
if (
|
||||
not isinstance(value, (int, float))
|
||||
or isinstance(value, bool)
|
||||
or not math.isfinite(value)
|
||||
or value < 0
|
||||
):
|
||||
errors.append(f"RESULT_METRIC_MISSING:{name}")
|
||||
for name in ("files", "revisions"):
|
||||
if not isinstance(result.get(name), list):
|
||||
|
||||
Reference in New Issue
Block a user