Add initial plotting test

This commit is contained in:
Matthias 2019-06-10 20:17:23 +02:00
parent cae2185460
commit 2891d7cccb
3 changed files with 54 additions and 4 deletions

View File

@ -91,7 +91,7 @@ def generate_graph(
trades: pd.DataFrame = None, trades: pd.DataFrame = None,
indicators1: List[str] = [], indicators1: List[str] = [],
indicators2: List[str] = [], indicators2: List[str] = [],
) -> tools.make_subplots: ) -> go.Figure:
""" """
Generate the graph from the data generated by Backtesting or from DB Generate the graph from the data generated by Backtesting or from DB
Volume will always be ploted in row2, so Row 1 and are to our disposal for custom indicators Volume will always be ploted in row2, so Row 1 and are to our disposal for custom indicators

View File

@ -0,0 +1,52 @@
from unittest.mock import MagicMock
import plotly.graph_objs as go
from freqtrade.arguments import Arguments, TimeRange
from freqtrade.data import history
from freqtrade.plot.plotting import (generate_graph, generate_plot_file,
generate_row, plot_trades)
def fig_generating_mock(fig, *args, **kwargs):
""" Return Fig - used to mock generate_row and plot_trades"""
return fig
def test_generate_row():
# TODO: implement me
pass
def test_plot_trades():
# TODO: implement me
pass
def test_generate_graph(default_conf, mocker):
row_mock = mocker.patch('freqtrade.plot.plotting.generate_row',
MagicMock(side_effect=fig_generating_mock))
trades_mock = mocker.patch('freqtrade.plot.plotting.plot_trades',
MagicMock(side_effect=fig_generating_mock))
timerange = TimeRange(None, 'line', 0, -100)
data = history.load_pair_history(pair='UNITTEST/BTC', ticker_interval='1m',
datadir=None, timerange=timerange)
indicators1 = []
indicators2 = []
fig = generate_graph(pair="UNITTEST/BTC", data=data, trades=None,
indicators1=indicators1, indicators2=indicators2)
assert isinstance(fig, go.Figure)
assert fig.layout.title.text == "UNITTEST/BTC"
figure = fig.layout.figure
# Candlesticks are plotted first
assert isinstance(figure.data[0], go.Candlestick)
assert figure.data[0].name == "Price"
assert isinstance(figure.data[1], go.Bar)
assert figure.data[1].name == "Volume"
assert row_mock.call_count == 2
assert trades_mock.call_count == 1

View File

@ -32,7 +32,6 @@ from typing import Any, Dict, List
import pandas as pd import pandas as pd
import pytz import pytz
from plotly.offline import plot
from freqtrade import persistence from freqtrade import persistence
from freqtrade.arguments import Arguments, TimeRange from freqtrade.arguments import Arguments, TimeRange
@ -87,7 +86,6 @@ def load_trades(db_url: str = None, exportfilename: str = None) -> pd.DataFrame:
return trades return trades
def get_trading_env(args: Namespace): def get_trading_env(args: Namespace):
""" """
Initalize freqtrade Exchange and Strategy, split pairs recieved in parameter Initalize freqtrade Exchange and Strategy, split pairs recieved in parameter
@ -132,7 +130,7 @@ def get_tickers_data(strategy, exchange, pairs: List[str], timerange: TimeRange,
refresh_pairs=_CONF.get('refresh_pairs', False), refresh_pairs=_CONF.get('refresh_pairs', False),
timerange=timerange, timerange=timerange,
exchange=Exchange(_CONF), exchange=Exchange(_CONF),
live=args.live, live=live,
) )
# No ticker found, impossible to download, len mismatch # No ticker found, impossible to download, len mismatch