补全:把红缩到一步
(每道题开头都有同一段:上面那套被测系统、unittest 和 mock,以及 eng_07 的静音 run(*cases)——交回「跑了几条/挂了几条/出错几条」。)
贯穿全条的被测系统(四段流水线):
parse(line) "苹果 3 2.5" → ("苹果", 3, 2.5);不是三段就 raise ValueError
subtotal / discount 数量×单价;合计满 100 打九折
Store add(名, 数量, 单价);total() = discount(各小计之和)
report(store, rate) 每样一行「名 数量 小计」,末行「合计 X 约 Y 外币」(Y = X / 汇率)
fetch_rate() 真的去连汇率服务——本地没网,一调就 ConnectionError
handle(lines, get_rate) 整条流水线:parse 每行 → Store → report(get_rate())端到端红了、单元全绿。补全 locate(lines, rate, want):按流水线顺序逐步检查——parse 全部能过吗(否则「parse」);Store.total 是否等于 want_total(否则「total」);report 末行是否等于 want_last(否则「report」);都对交回「ok」。
全部评论