必要案例檢查器
tools/check_required_cases.py 只讀核准案例清單與實際 JUnit,核對每案是否執行且通過。使用 Python 3.9+ 標準庫,不需 contract 設定;不執行測試、不授予 QA/發布核准。
用可跑範例開始
在 framework 根目錄執行:
python3 examples/quality-workflow/run_demo.py
python3 tools/check_required_cases.py \
--plan examples/quality-workflow/acceptance-plan.json --role be \
--junit examples/quality-workflow/reports/baseline.xml --json第一個命令產生教學正常/故障/復原報告;第二個只核對正常版。故障版報告應被 checker 拒絕,演練的預期紅燈不能當產品通過。
--plan 讀 acceptance-plan 的 schema_version 1 格式,必須指定 --role be|fe|integration。沒有該角色案例時拒絕,不以空集合通過。
直接提供必要清單
--required-cases 接受非空 JSON 陣列,精確對應 JUnit 的 classname/name:
[
{"case_id": "BE-PAID-REJECT", "classname": "payment_api", "name": "reject_paid_order"}
]清單須來自固定且核准的權威來源,不能從當次執行結果反向生成。相同 case ID 或相同 testcase 對照不可重複。
接進 CI
可跑教學 job 先啟動服務並跑驗收,再傳遞原 runner 的退出狀態:
test_status=0
your-test-runner --junit artifacts/junit.xml || test_status=$?
python3 tools/check_required_cases.py \
--required-cases approved-required-cases.json \
--junit artifacts/junit.xml --runner-exit-code "$test_status" \
--json > artifacts/required-case-result.jsonyour-test-runner 是產品接線位置,需替換。CI 保留最後非零狀態,並在成功/失敗時都保存原始報告與核對結果。固定測試、程式、環境版本及可信 CI 來源是外層流程的責任。
拒絕條件與界線
必要案例缺漏、失敗、error、skip、not_run;runner 非零或其他案例失敗,均不可通過。
空/重複/含糊清單、未知結果、損毀/缺失/超過 8 MiB 的報告,及 suite 計數矛盾均拒絕。
JSON 輸出
ok、逐案cases、errors與runner_exit_code;無效輸入也回非零結果。不驗 AC 覆蓋、斷言充分性、核准權限、CI 來源或實際部署。這些由 完整工作流程 的審查與可信證據接線處理。