JMComic-Crawler-Python/tests/test_jmcomic/__init__.py
hect0x7 10ef575779
v2.0.0: 一次大版本更新 (#33)
- 重构JmcomicClient,重新设计抽象层次,以及两种实现:HTMl、API,支持请求重试+域名更换的机制;
- 重构JmOption,更加优雅、简单的配置,支持更多文件类型;
- 优化debug机制,等等。
2023-05-10 22:02:42 +08:00

78 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import io
import platform
import unittest
# noinspection PyUnresolvedReferences
import jmcomic
from jmcomic import *
# set encoding
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, 'utf-8')
class JmTestConfigurable(unittest.TestCase):
option: JmOption = None
client: JmcomicClient = None
def setUp(self) -> None:
print_sep('>')
def tearDown(self) -> None:
print_sep('<')
@classmethod
def setUpClass(cls):
# 获取项目根目录
application_workspace = os.path.abspath(os.path.dirname(__file__) + '/../..')
# 设置 workspace → assets/
set_application_workspace(f'{application_workspace}/assets/')
# 设置 实体类的save_dir → assets/download
WorkEntity.detail_save_base_dir = workspace("/download/", is_dir=True)
# 设置 JmOptionJmcomicClient
option = cls.use_option('option_test.yml')
cls.option = option
cls.client = option.build_jm_client()
# 启用 JmClientClient 缓存
cls.enable_client_cache()
# 跨平台设置
cls.adapt_os()
@staticmethod
def use_option(op_filename: str) -> JmOption:
return create_option(workspace(f"/config/{op_filename}"))
@staticmethod
def move_workspace(new_dir: str):
set_application_workspace(workspace(f"/{new_dir}/", is_dir=True))
@classmethod
def adapt_os(cls):
adapt_func_dict = {
'Windows': cls.adapt_win,
'Darwin': cls.adapt_macos,
'Linux': cls.adapt_linux,
}
adapt_func_dict.get(platform.system(), lambda *args, **kwargs: None)()
@classmethod
def adapt_win(cls):
pass
@classmethod
def adapt_linux(cls):
pass
@classmethod
def adapt_macos(cls):
pass
@classmethod
def enable_client_cache(cls):
cls.client.enable_cache()