JMComic-Crawler-Python/tests/test_jmcomic/__init__.py

97 lines
2.5 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')
# 获取项目根目录
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):
# 设置 JmOptionJmcomicClient
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