# coding=utf-8from __future__ import unicode_literalsimport osimport sysimport jsonimport pandas as pdimport numpy as npfrom nose.tools import eq_, raisesfrom mock import patch, MagicMockfrom pyecharts import Bar, Map, jupyter_imageimport pyecharts.exceptions as exceptionsfrom test.constants import CLOTHESfrom test.utils import get_default_rendering_file_contentTITLE = "柱状图数据堆叠示例"def create_a_bar(title, renderer="canvas"):v1 = [5, 20, 36, 10, 75, 90]v2 = [10, 25, 8, 60, 20, 80]bar = Bar(title, renderer=renderer)bar.add("商家A", CLOTHES, v1, is_stack=True)bar.add("商家B", CLOTHES, v2, is_stack=True)return bardef test_theme_option():bar = create_a_bar(TITLE, renderer="svg")bar.use_theme("dark")html = bar.render_embed()assert "'dark'" in html@raises(exceptions.InvalidTheme)def test_invalid_theme_option():bar = create_a_bar(TITLE, renderer="svg")bar.use_theme("brilliant")def test_svg_option():bar = create_a_bar(TITLE, renderer="svg")html = bar.render_embed()assert "{renderer: 'svg'}" in htmldef test_svg_option_in_note_book():bar = create_a_bar(TITLE, renderer="svg")html = bar._repr_html_()assert "{renderer: 'svg'}" in htmldef test_canvas_option():bar = create_a_bar(TITLE)html = bar.render_embed()assert "{renderer: 'canvas'}" in htmldef test_canvas_option_in_notebook():bar = create_a_bar(TITLE)html = bar._repr_html_()assert "{renderer: 'canvas'}" in htmldef test_embed_option():bar = create_a_bar(TITLE)html = bar.render_embed()json_encoded_title = json.dumps(TITLE)assert json_encoded_title in htmlassert "<html>" not in htmlassert "<body>" not in htmldef test_jupyter_repr_png():bar = create_a_bar(TITLE)assert bar._repr_png_() is Nonedef test_jupyter_repr_jpeg():bar = create_a_bar(TITLE)assert bar._repr_jpeg_() is Nonedef test_jupyter_repr_svg():bar = create_a_bar(TITLE)assert bar._repr_svg_() is None@patch("pyecharts.engine.create_default_environment")@patch("os.unlink")def test_render_as_svg(fake_unlink, fake_factory):fake_env = MagicMock(render_chart_to_file=MagicMock(return_value="fake svg"))fake_factory.return_value = fake_envwith jupyter_image("svg"):bar = create_a_bar("test", renderer="svg")svg_content = bar._repr_svg_()fake_unlink.assert_called()eq_(svg_content, "fake svg")@raises(exceptions.InvalidConfiguration)def test_render_as_svg_with_wrong_configuration():with jupyter_image("svg"):bar = create_a_bar("test")bar._repr_svg_()@raises(exceptions.InvalidConfiguration)def test_render_as_png_with_wrong_configuration():with jupyter_image("png"):bar = create_a_bar("test", renderer="svg")bar._repr_png_()def test_base_get_js_dependencies():bar = create_a_bar(TITLE)dependencies = bar.get_js_dependencies()expected = ["echarts.min"]eq_(dependencies, expected)def test_numpy_array():v1 = np.array([5, 20, 36, 10, 75, 90])bar = Bar(TITLE)bar.add("商家A", CLOTHES, v1, is_stack=True)html = bar.render_embed()json_encoded_title = json.dumps(TITLE)assert json_encoded_title in htmldef test_pandas_dataframe():title = "bar chart"index = pd.date_range("3/8/2017", periods=6, freq="M")df1 = pd.DataFrame(np.random.randn(6), index=index)df2 = pd.DataFrame(np.random.randn(6), index=index)dtvalue1 = [i[0] for i in df1.values]dtvalue2 = [i[0] for i in df2.values]_index = [i for i in df1.index.format()]bar = Bar(title, "Profit and loss situation")bar.add("profit", _index, dtvalue1)bar.add("loss", _index, dtvalue2)html = bar.render_embed()assert title in htmldef test_echarts_position_in_render_html():value = [20, 190, 253, 77, 65]attr = ["汕头市", "汕尾市", "揭阳市", "阳江市", "肇庆市"]map = Map("广东地图示例", width=1200, height=600, page_title=TITLE)map.add("",attr,value,maptype="广东",is_visualmap=True,visual_text_color="#000",)map.render()actual_content = get_default_rendering_file_content()assert TITLE in actual_contentdef test_show_config():stdout_ = sys.stdoutcaptured_stdout = "stdout.txt"try:with open(captured_stdout, "w") as f:sys.stdout = fbar = create_a_bar("new")bar.print_echarts_options()except Exception as e:# whatever happens, continue and restore stdoutprint(e)sys.stdout = stdout_with open(captured_stdout, "r") as f:content = f.read()assert "None" not in contentassert "null" not in contentassert "false" in contentassert "False" not in contentos.unlink(captured_stdout)def test_base_cast_records():records = [{"key": 1}, {"value": 2}]keys, values = Bar.cast(records)eq_(keys, ["key", "value"])eq_(values, [1, 2])def test_base_cast_dict():adict = {"key": 1, "value": 2}keys, values = Bar.cast(adict)eq_(keys, ["key", "value"])eq_(values, [1, 2])
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。