Centralize optional dependency stubs in test bootstrap

This commit is contained in:
jxxghp
2026-07-20 14:53:36 +08:00
parent b042086efa
commit 1382975b18
2 changed files with 15 additions and 34 deletions
+7 -17
View File
@@ -1,27 +1,17 @@
import io import io
import sys
import tempfile import tempfile
import unittest import unittest
import zipfile import zipfile
from pathlib import Path from pathlib import Path
from types import ModuleType
from unittest.mock import patch from unittest.mock import patch
sys.modules.setdefault("qbittorrentapi", ModuleType("qbittorrentapi")) from app.testing.bootstrap import ensure_optional_stub
setattr(sys.modules["qbittorrentapi"], "TorrentFilesList", list)
sys.modules.setdefault("transmission_rpc", ModuleType("transmission_rpc")) ensure_optional_stub("qbittorrentapi", TorrentFilesList=list)
setattr(sys.modules["transmission_rpc"], "File", object) ensure_optional_stub("transmission_rpc", File=object)
sys.modules.setdefault("psutil", ModuleType("psutil")) ensure_optional_stub("psutil")
sys.modules.setdefault("aioshutil", ModuleType("aioshutil")) ensure_optional_stub("aioshutil")
sys.modules.setdefault("pyquery", ModuleType("pyquery")) ensure_optional_stub("pyquery", PyQuery=object)
setattr(sys.modules["pyquery"], "PyQuery", object)
sys.modules.setdefault("dateparser", ModuleType("dateparser"))
setattr(sys.modules["dateparser"], "parse", lambda *args, **kwargs: None)
sys.modules.setdefault("dateutil", ModuleType("dateutil"))
dateutil_parser = ModuleType("dateutil.parser")
setattr(dateutil_parser, "parse", lambda *args, **kwargs: None)
sys.modules.setdefault("dateutil.parser", dateutil_parser)
setattr(sys.modules["dateutil"], "parser", dateutil_parser)
from app.chain.message import MessageChain from app.chain.message import MessageChain
from app.chain.skills import SkillsChain, skills_interaction_manager from app.chain.skills import SkillsChain, skills_interaction_manager
+8 -17
View File
@@ -1,23 +1,14 @@
import sys
import unittest import unittest
from types import ModuleType, SimpleNamespace from types import SimpleNamespace
from unittest.mock import patch from unittest.mock import patch
sys.modules.setdefault("qbittorrentapi", ModuleType("qbittorrentapi")) from app.testing.bootstrap import ensure_optional_stub
setattr(sys.modules["qbittorrentapi"], "TorrentFilesList", list)
sys.modules.setdefault("transmission_rpc", ModuleType("transmission_rpc")) ensure_optional_stub("qbittorrentapi", TorrentFilesList=list)
setattr(sys.modules["transmission_rpc"], "File", object) ensure_optional_stub("transmission_rpc", File=object)
sys.modules.setdefault("psutil", ModuleType("psutil")) ensure_optional_stub("psutil")
sys.modules.setdefault("aioshutil", ModuleType("aioshutil")) ensure_optional_stub("aioshutil")
sys.modules.setdefault("pyquery", ModuleType("pyquery")) ensure_optional_stub("pyquery", PyQuery=object)
setattr(sys.modules["pyquery"], "PyQuery", object)
sys.modules.setdefault("dateparser", ModuleType("dateparser"))
setattr(sys.modules["dateparser"], "parse", lambda *args, **kwargs: None)
sys.modules.setdefault("dateutil", ModuleType("dateutil"))
dateutil_parser = ModuleType("dateutil.parser")
setattr(dateutil_parser, "parse", lambda *args, **kwargs: None)
sys.modules.setdefault("dateutil.parser", dateutil_parser)
setattr(sys.modules["dateutil"], "parser", dateutil_parser)
from app.chain.message import MessageChain from app.chain.message import MessageChain
from app.chain.site import SiteChain, site_interaction_manager from app.chain.site import SiteChain, site_interaction_manager