test_timeliness_basis_extraction.py 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import importlib.util
  2. import pathlib
  3. import sys
  4. import types
  5. import pytest
  6. CURRENT_DIR = pathlib.Path(__file__).resolve().parent
  7. PROJECT_ROOT = CURRENT_DIR.parent.parent
  8. MODULE_PATH = PROJECT_ROOT / "core" / "construction_review" / "component" / "reviewers" / "timeliness_basis_reviewer.py"
  9. @pytest.fixture
  10. def basis_module(monkeypatch):
  11. logger_module = types.ModuleType("foundation.observability.logger.loggering")
  12. logger_module.review_logger = types.SimpleNamespace(
  13. info=lambda *args, **kwargs: None,
  14. warning=lambda *args, **kwargs: None,
  15. error=lambda *args, **kwargs: None,
  16. )
  17. inter_tool_module = types.ModuleType("core.construction_review.component.reviewers.utils.inter_tool")
  18. inter_tool_module.InterTool = type("InterTool", (), {})
  19. directory_module = types.ModuleType("core.construction_review.component.reviewers.utils.directory_extraction")
  20. directory_module.BasisItems = type("BasisItems", (), {})
  21. directory_module.BasisItem = type("BasisItem", (), {})
  22. reviewer_module = types.ModuleType("core.construction_review.component.reviewers.standard_timeliness_reviewer")
  23. reviewer_module.StandardTimelinessReviewer = type("StandardTimelinessReviewer", (), {})
  24. reviewer_module.review_standard_timeliness_with_standardized_output = lambda *args, **kwargs: None
  25. monkeypatch.setitem(sys.modules, "foundation", types.ModuleType("foundation"))
  26. monkeypatch.setitem(sys.modules, "foundation.observability", types.ModuleType("foundation.observability"))
  27. monkeypatch.setitem(sys.modules, "foundation.observability.logger", types.ModuleType("foundation.observability.logger"))
  28. monkeypatch.setitem(sys.modules, "foundation.observability.logger.loggering", logger_module)
  29. monkeypatch.setitem(sys.modules, "core", types.ModuleType("core"))
  30. monkeypatch.setitem(sys.modules, "core.construction_review", types.ModuleType("core.construction_review"))
  31. monkeypatch.setitem(sys.modules, "core.construction_review.component", types.ModuleType("core.construction_review.component"))
  32. monkeypatch.setitem(sys.modules, "core.construction_review.component.reviewers", types.ModuleType("core.construction_review.component.reviewers"))
  33. monkeypatch.setitem(sys.modules, "core.construction_review.component.reviewers.utils", types.ModuleType("core.construction_review.component.reviewers.utils"))
  34. monkeypatch.setitem(sys.modules, "core.construction_review.component.reviewers.utils.inter_tool", inter_tool_module)
  35. monkeypatch.setitem(sys.modules, "core.construction_review.component.reviewers.utils.directory_extraction", directory_module)
  36. monkeypatch.setitem(sys.modules, "core.construction_review.component.reviewers.standard_timeliness_reviewer", reviewer_module)
  37. spec = importlib.util.spec_from_file_location("test_timeliness_basis_reviewer_module", MODULE_PATH)
  38. module = importlib.util.module_from_spec(spec)
  39. assert spec.loader is not None
  40. spec.loader.exec_module(module)
  41. return module
  42. @pytest.fixture
  43. def basis_service(basis_module):
  44. return basis_module.BasisReviewService()
  45. def test_debug_single_input(basis_service):
  46. text = "《okk》(主席令第29号)"
  47. result = basis_service._extract_standard_from_basis(text)
  48. assert result == {
  49. "standard_name": "okk",
  50. "standard_number": "主席令第29号",
  51. }
  52. print(result)