feat: add render-algo subcommand for single-algorithm GT+detection PNG
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
"""render_algo 单元测试。"""
|
||||
|
||||
import json
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
from ts_anomaly_td.visualize import render_algo
|
||||
|
||||
|
||||
def _make_ts_vals_labels(n=200):
|
||||
"""生成测试用时间序列。"""
|
||||
ts = [i * 3600_000 for i in range(n)] # 每小时
|
||||
vals = [float(i % 20) for i in range(n)]
|
||||
labels = [1 if 50 <= i <= 60 else 0 for i in range(n)]
|
||||
return ts, vals, labels
|
||||
|
||||
|
||||
def test_render_algo_basic():
|
||||
"""render_algo 应生成有效 PNG。"""
|
||||
ts, vals, labels = _make_ts_vals_labels()
|
||||
windows = [[ts[50], ts[60]]]
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
out = Path(tmpdir) / "test_algo.png"
|
||||
result = render_algo(ts, vals, labels, windows, "ksigma", str(out), title="test")
|
||||
assert Path(result).exists()
|
||||
assert Path(result).stat().st_size > 5000
|
||||
|
||||
|
||||
def test_render_algo_empty_windows():
|
||||
"""空检测窗口应正常渲染。"""
|
||||
ts, vals, labels = _make_ts_vals_labels(50)
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
out = Path(tmpdir) / "empty.png"
|
||||
result = render_algo(ts, vals, labels, [], "iqr", str(out))
|
||||
assert Path(result).exists()
|
||||
Reference in New Issue
Block a user