| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- """LangSmith 离线评估隔离测试。"""
- import io
- from pathlib import Path
- from tempfile import TemporaryDirectory
- import unittest
- from contextlib import redirect_stdout
- from unittest.mock import patch
- from vendor_guard.langsmith_evaluation import (
- _evaluate_without_sdk_console,
- _isolated_evaluation_workspace,
- )
- class EvaluationWorkspaceTests(unittest.TestCase):
- def setUp(self) -> None:
- self.temp_dir = TemporaryDirectory()
- self.addCleanup(self.temp_dir.cleanup)
- self.source_root = Path(self.temp_dir.name)
- for directory in ("data-room", "policies", "skills", "fixtures"):
- path = self.source_root / directory
- path.mkdir()
- (path / "source.txt").write_text(directory, encoding="utf-8")
- old_report = (
- self.source_root
- / "reports"
- / "ACME"
- / "onboarding-report.md"
- )
- old_report.parent.mkdir(parents=True)
- old_report.write_text("旧的交互报告", encoding="utf-8")
- def test_workspace_copies_inputs_but_not_existing_reports(self) -> None:
- with _isolated_evaluation_workspace(self.source_root) as workspace:
- self.assertEqual(
- (workspace / "data-room" / "source.txt").read_text(
- encoding="utf-8"
- ),
- "data-room",
- )
- self.assertTrue((workspace / "policies" / "source.txt").is_file())
- self.assertTrue((workspace / "skills" / "source.txt").is_file())
- self.assertTrue((workspace / "fixtures" / "source.txt").is_file())
- self.assertTrue((workspace / "reports").is_dir())
- self.assertFalse(
- (workspace / "reports" / "ACME" / "onboarding-report.md").exists()
- )
- def test_workspace_changes_do_not_touch_real_project(self) -> None:
- with _isolated_evaluation_workspace(self.source_root) as workspace:
- sandbox_policy = workspace / "policies" / "source.txt"
- sandbox_policy.write_text("被测试用例修改", encoding="utf-8")
- sandbox_report = (
- workspace / "reports" / "ACME" / "onboarding-report.md"
- )
- sandbox_report.parent.mkdir(parents=True)
- sandbox_report.write_text("新评估报告", encoding="utf-8")
- self.assertEqual(
- (self.source_root / "policies" / "source.txt").read_text(
- encoding="utf-8"
- ),
- "policies",
- )
- self.assertEqual(
- (
- self.source_root
- / "reports"
- / "ACME"
- / "onboarding-report.md"
- ).read_text(encoding="utf-8"),
- "旧的交互报告",
- )
- @patch("vendor_guard.langsmith_evaluation.evaluate")
- def test_sdk_english_output_and_progress_are_hidden(self, evaluate) -> None:
- expected_result = object()
- def noisy_evaluate(_target, **_kwargs):
- print("View the evaluation results for experiment")
- return expected_result
- evaluate.side_effect = noisy_evaluate
- visible_stdout = io.StringIO()
- with redirect_stdout(visible_stdout):
- result = _evaluate_without_sdk_console(object(), data="dataset")
- self.assertIs(result, expected_result)
- self.assertEqual(visible_stdout.getvalue(), "")
- if __name__ == "__main__":
- unittest.main()
|