31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
import json
|
||
|
||
from app.harness.steps_json_traces import steps_json_to_trace_rows
|
||
|
||
|
||
def test_parses_tool_call_into_name_and_args():
|
||
# 真实 infer_adhoc steps_json 形态:tool_call={"tool":..., "args":...}(非 "name")
|
||
steps = [
|
||
{
|
||
"thought": "看根节点",
|
||
"tool_call": {"tool": "view_node", "args": {"node_id": "v_L1_000"}},
|
||
"tool_output": "o0",
|
||
},
|
||
{
|
||
"thought": "搜索",
|
||
"tool_call": {"tool": "search_similar", "args": {"query": "gadget"}},
|
||
"tool_output": "hit",
|
||
},
|
||
]
|
||
rows = steps_json_to_trace_rows("vid1", "q1", json.dumps(steps))
|
||
assert [r["step"] for r in rows] == [0, 1]
|
||
assert rows[0]["tool_name"] == "view_node"
|
||
assert rows[0]["tool_args"] == {"node_id": "v_L1_000"}
|
||
assert rows[0]["video_id"] == "vid1" and rows[0]["question_id"] == "q1"
|
||
assert rows[1]["tool_output"] == "hit"
|
||
|
||
|
||
def test_empty_or_blank_steps_json_returns_empty():
|
||
assert steps_json_to_trace_rows("v", "q", "") == []
|
||
assert steps_json_to_trace_rows("v", "q", "[]") == []
|