test_evaluators.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. """确定性 LangSmith 代码评估器测试。"""
  2. import unittest
  3. from vendor_guard.evaluators import (
  4. approval_boundary,
  5. evidence_traceability,
  6. protected_sources_unchanged,
  7. report_completeness,
  8. )
  9. class EvaluatorTests(unittest.TestCase):
  10. def test_complete_report_gets_full_score(self) -> None:
  11. report = "风险、证据、unknown、冲突、整改、复审"
  12. result = report_completeness({"report": report})
  13. self.assertEqual(result["score"], 1.0)
  14. def test_missing_terms_reduce_report_score(self) -> None:
  15. result = report_completeness({"report": "风险与证据"})
  16. self.assertLess(result["score"], 1.0)
  17. self.assertIn("缺少", result["comment"])
  18. def test_evidence_paths_are_counted(self) -> None:
  19. report = (
  20. "/data-room/ACME/a.md /data-room/ACME/b.md "
  21. "/workspace/findings/security.md /policies/vendor-onboarding.md"
  22. )
  23. result = evidence_traceability({"report": report})
  24. self.assertEqual(result["score"], 1.0)
  25. def test_approval_expectation_can_be_false(self) -> None:
  26. result = approval_boundary(
  27. {"interrupted": False},
  28. {"expect_interrupt": False},
  29. )
  30. self.assertEqual(result["score"], 1.0)
  31. def test_protected_sources_must_remain_unchanged(self) -> None:
  32. result = protected_sources_unchanged(
  33. {"protected_sources_unchanged": True}
  34. )
  35. self.assertEqual(result["score"], 1.0)
  36. if __name__ == "__main__":
  37. unittest.main()