mirror of
https://github.com/pyecharts/pyecharts.git
synced 2025-12-08 20:59:23 +00:00
81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
import unittest
|
||
from unittest.mock import patch
|
||
|
||
from pyecharts.charts import Bar
|
||
from pyecharts.render.engine import RenderEngine
|
||
from pyecharts.datasets import EXTRA, FILENAMES
|
||
from pyecharts.globals import CurrentConfig
|
||
|
||
|
||
class TestEngine(unittest.TestCase):
|
||
|
||
def test_generate_js_link(self):
|
||
FILENAMES.update({"existing_dep": ("file_path", "ext")})
|
||
EXTRA.update(
|
||
{
|
||
"https://extra_host.com": {
|
||
"dep": ("extra_file_path", "extra_ext"),
|
||
},
|
||
"https://extra_host.com/css": {
|
||
"dep1": ("extra_file_path", "css"),
|
||
},
|
||
}
|
||
)
|
||
|
||
# Bar 图
|
||
chart = Bar()
|
||
chart.js_host = None
|
||
chart.js_dependencies.items = [
|
||
"https://api.map.baidu.com/test",
|
||
"existing_dep",
|
||
"dep",
|
||
"dep1",
|
||
]
|
||
|
||
RenderEngine.generate_js_link(chart)
|
||
|
||
assert chart.js_host == CurrentConfig.ONLINE_HOST
|
||
|
||
expected_links = [
|
||
"https://api.map.baidu.com/test",
|
||
"{}file_path.ext".format(CurrentConfig.ONLINE_HOST),
|
||
"https://extra_host.comextra_file_path.extra_ext",
|
||
]
|
||
assert chart.dependencies == expected_links
|
||
|
||
expected_css_links = [
|
||
"https://extra_host.com/cssextra_file_path.css",
|
||
]
|
||
assert chart.css_libs == expected_css_links
|
||
|
||
def test_import_iterable_new_location(self):
|
||
# 在collections.abc不可用的情况下,尝试从collections导入
|
||
with patch("collections.abc", side_effect=ImportError):
|
||
import collections
|
||
|
||
try:
|
||
assert collections.Iterable.__module__ == "collections"
|
||
except (AttributeError, AssertionError):
|
||
pass
|
||
|
||
def test_import_iterable_old_location(self):
|
||
with patch.dict("sys.modules", {"collections.abc": object()}):
|
||
import collections.abc
|
||
|
||
# importlib.reload(collections.abc) # 重新加载模块以应用补丁
|
||
assert collections.abc.Iterable.__module__ == "collections.abc"
|
||
|
||
def test_iterable_import(self):
|
||
# 尝试从 collections.abc 导入 Iterable
|
||
try:
|
||
from collections.abc import Iterable
|
||
self.assertTrue(True) # 如果成功导入,测试通过
|
||
except ImportError:
|
||
# 如果从 collections.abc 导入失败,则尝试从 collections 导入
|
||
try:
|
||
from collections import Iterable
|
||
self.assertTrue(True) # 如果这里成功导入,测试通过
|
||
except ImportError:
|
||
# 如果两者都失败,则测试不通过
|
||
self.fail("Failed to import Iterable")
|