62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
"""visualize_pipeline TSV 解析单元测试(无需 GPU)。"""
|
||
from __future__ import annotations
|
||
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
PACK_ROOT = Path(__file__).resolve().parent.parent
|
||
sys.path.insert(0, str(PACK_ROOT / "scripts"))
|
||
|
||
from visualize_tsv import parse_result_tsv # noqa: E402
|
||
|
||
|
||
def test_parse_offline_12col_with_doctor_summary(tmp_path: Path) -> None:
|
||
tsv = tmp_path / "r.txt"
|
||
tsv.write_text(
|
||
"rank\tstart_sec\tend_sec\tproduct_id_top1\ttop1_name\ttop1_conf\t"
|
||
"product_id_top2\ttop2_name\ttop2_conf\tproduct_id_top3\ttop3_name\ttop3_conf\n"
|
||
"1\t1.0\t5.0\tP1\t手套\t0.9\t\t\t\t\t\t\n"
|
||
"医生信息:张三 (id=D01, conf=0.91)\n",
|
||
encoding="utf-8",
|
||
)
|
||
segs, doc = parse_result_tsv(tsv)
|
||
assert len(segs) == 1
|
||
assert segs[0].row.n1 == "手套"
|
||
assert doc is not None and "张三" in doc
|
||
|
||
|
||
def test_parse_stream_15col(tmp_path: Path) -> None:
|
||
tsv = tmp_path / "s.txt"
|
||
header = "\t".join(
|
||
[
|
||
"rank", "start_sec", "end_sec", "product_id_top1", "top1_name", "top1_conf",
|
||
"product_id_top2", "top2_name", "top2_conf", "product_id_top3", "top3_name", "top3_conf",
|
||
"doctor_id", "doctor_name", "doctor_conf",
|
||
]
|
||
)
|
||
row = [
|
||
"1", "2.0", "8.0", "",
|
||
"(无有效耗材帧:好帧/白名单/耗材置信度未全部满足)", "",
|
||
"", "", "", "", "", "", "D2", "李四", "0.77",
|
||
]
|
||
tsv.write_text(header + "\n" + "\t".join(row) + "\n", encoding="utf-8")
|
||
segs, doc = parse_result_tsv(tsv)
|
||
assert len(segs) == 1
|
||
assert segs[0].is_failure()
|
||
assert segs[0].doctor_name == "李四"
|
||
assert doc is None
|
||
|
||
|
||
def test_parse_failure_hud_text(tmp_path: Path) -> None:
|
||
tsv = tmp_path / "f.txt"
|
||
tsv.write_text(
|
||
"rank\tstart_sec\tend_sec\tproduct_id_top1\ttop1_name\ttop1_conf\t"
|
||
"product_id_top2\ttop2_name\ttop2_conf\tproduct_id_top3\ttop3_name\ttop3_conf\n"
|
||
"1\t0.5\t3.0\t\t(无有效耗材帧:好帧/白名单/耗材置信度未全部满足)\t\t"
|
||
"\t\t\t\t\t\t\n",
|
||
encoding="utf-8",
|
||
)
|
||
segs, _ = parse_result_tsv(tsv)
|
||
assert segs[0].is_failure()
|
||
assert "无有效耗材帧" in segs[0].row.n1
|