mirror of
https://github.com/hect0x7/JMComic-Crawler-Python.git
synced 2025-09-26 22:31:30 +08:00
97 lines
2.5 KiB
Python
97 lines
2.5 KiB
Python
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')
|
||
# 获取项目根目录
|
||
project_dir = os.path.abspath(os.path.dirname(__file__) + '/../..')
|
||
os.chdir(project_dir)
|
||
|
||
|
||
def ts():
|
||
return time_stamp(False)
|
||
|
||
|
||
skip_time_cost_log = file_exists('./.idea')
|
||
|
||
cost_time_dict = {}
|
||
|
||
|
||
class JmTestConfigurable(unittest.TestCase):
|
||
option: JmOption = None
|
||
client: JmcomicClient = None
|
||
project_dir: str = project_dir
|
||
|
||
def setUp(self) -> None:
|
||
if skip_time_cost_log:
|
||
return
|
||
method_name = self._testMethodName
|
||
cost_time_dict[method_name] = ts()
|
||
print_eye_catching(f' [{format_ts()} | {method_name}] '.center(70, '🚀'))
|
||
|
||
def tearDown(self) -> None:
|
||
if skip_time_cost_log:
|
||
return
|
||
method_name = self._testMethodName
|
||
begin = cost_time_dict[method_name]
|
||
end = ts()
|
||
print_eye_catching(f' [cost {end - begin:.02f}s | {self._testMethodName}] '.center(70, '✅'))
|
||
|
||
@classmethod
|
||
def setUpClass(cls):
|
||
# 设置 JmOption,JmcomicClient
|
||
option = cls.new_option()
|
||
cls.option = option
|
||
# 设置缓存级别为option,可以减少请求次数
|
||
cls.client = option.build_jm_client(cache='level_option')
|
||
|
||
# 跨平台设置
|
||
cls.adapt_os()
|
||
|
||
if skip_time_cost_log:
|
||
return
|
||
cost_time_dict[cls.__name__] = ts()
|
||
|
||
@classmethod
|
||
def new_option(cls):
|
||
try:
|
||
return create_option_by_env('JM_OPTION_PATH_TEST')
|
||
except JmcomicException:
|
||
return create_option('./assets/option/option_test.yml')
|
||
|
||
@classmethod
|
||
def tearDownClass(cls) -> None:
|
||
if skip_time_cost_log:
|
||
return
|
||
begin = cost_time_dict[cls.__name__]
|
||
end = ts()
|
||
print_eye_catching(f' [total cost {end - begin:.02f}s | {cls.__name__}] '.center(60, '-'))
|
||
|
||
@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
|