为什么 Harness 需要专属测试套件
普通业务逻辑测试覆盖"应该发生什么",Harness 测试还要覆盖"不应该发生什么":
- 未注册动作不能被执行
- IRREVERSIBLE 动作不能在审批前运行
- 预算耗尽后所有动作都必须被拦截
- 注入载荷必须被检测出来
这类负向测试用业务逻辑测试框架很难自然写出来;专门的 Harness 测试套件才是第一公民。
套件结构
tests/ ├── conftest.py 共享夹具和 mock handlers ├── test_functional.py 19 个功能测试 ├── test_adversarial.py 17 个对抗测试 └── test_chaos.py 9 个混沌测试加上run_tests.py——带进度栏和汇总表的自定义运行器,适合 CI 或人工检查。
设计模式一:conftest 共享夹具
所有测试共享同一套 mock handlers 和AgentHarness工厂:
# tests/conftest.py_store:dict[str,str]={}_sent_reports:list[str]=[]_deleted:list[str]=[]defmock_read(key:str)->str:return_store.get(key,f"{key}: (empty)")defmock_write(key:str,value:str)->str:_store[key]=valuereturnf"written{key}={value!r}"defmock_send(to:str,body:str)->str:_sent_reports.append(f"{to}:{body}")returnf"sent to{to}"defmock_delete(key:str)->str:_deleted.append(key)_store.pop(key,None)returnf"deleted{key}"defmake_harness(budget:int=100,log_suffix:str="")->AgentHarness:h=AgentHarness(budget=budget,log_path=f"/tmp/harness_test{log_suffix}.jsonl")h.registry.register(RegisteredAction(