From 8da55c37427ab9ea2a6835f0468c6291d194bfee Mon Sep 17 00:00:00 2001 From: Janne Sinivirta Date: Mon, 30 Oct 2017 19:56:53 +0200 Subject: [PATCH 1/3] move patching of arrow.utcnow to remove 500 unnecessary mock objects --- freqtrade/tests/test_backtesting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/tests/test_backtesting.py b/freqtrade/tests/test_backtesting.py index 29a9627a3..c86ba68ec 100644 --- a/freqtrade/tests/test_backtesting.py +++ b/freqtrade/tests/test_backtesting.py @@ -45,12 +45,12 @@ def conf(): def backtest(conf, pairs, mocker): trades = [] mocker.patch.dict('freqtrade.main._CONF', conf) + mocker.patch('arrow.utcnow', return_value=arrow.get('2017-08-20T14:50:00')) for pair in pairs: with open('freqtrade/tests/testdata/'+pair+'.json') as data_file: data = json.load(data_file) mocker.patch('freqtrade.analyze.get_ticker_history', return_value=data) - mocker.patch('arrow.utcnow', return_value=arrow.get('2017-08-20T14:50:00')) ticker = analyze_ticker(pair)[['close', 'date', 'buy']].copy() # for each buy point for row in ticker[ticker.buy == 1].itertuples(index=True): From 7190226c8490eedae213c58770c47efd1c583c73 Mon Sep 17 00:00:00 2001 From: Janne Sinivirta Date: Mon, 30 Oct 2017 22:06:09 +0200 Subject: [PATCH 2/3] reuse same mock for get_ticker_history, just change return_value --- freqtrade/tests/test_backtesting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/test_backtesting.py b/freqtrade/tests/test_backtesting.py index c86ba68ec..7ddab1fd3 100644 --- a/freqtrade/tests/test_backtesting.py +++ b/freqtrade/tests/test_backtesting.py @@ -44,13 +44,13 @@ def conf(): def backtest(conf, pairs, mocker): trades = [] + mocked_history = mocker.patch('freqtrade.analyze.get_ticker_history') mocker.patch.dict('freqtrade.main._CONF', conf) mocker.patch('arrow.utcnow', return_value=arrow.get('2017-08-20T14:50:00')) for pair in pairs: with open('freqtrade/tests/testdata/'+pair+'.json') as data_file: data = json.load(data_file) - - mocker.patch('freqtrade.analyze.get_ticker_history', return_value=data) + mocked_history.return_value = data ticker = analyze_ticker(pair)[['close', 'date', 'buy']].copy() # for each buy point for row in ticker[ticker.buy == 1].itertuples(index=True): From e68e6c0a1a37eaae8ab136881a9458e216fb46c2 Mon Sep 17 00:00:00 2001 From: Janne Sinivirta Date: Mon, 30 Oct 2017 22:31:28 +0200 Subject: [PATCH 3/3] reuse mock in hyperopt also --- freqtrade/tests/test_hyperopt.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/test_hyperopt.py b/freqtrade/tests/test_hyperopt.py index 8cbe0ad26..2e041327e 100644 --- a/freqtrade/tests/test_hyperopt.py +++ b/freqtrade/tests/test_hyperopt.py @@ -79,9 +79,10 @@ def buy_strategy_generator(params): @pytest.mark.skipif(not os.environ.get('BACKTEST', False), reason="BACKTEST not set") def test_hyperopt(conf, pairs, mocker): + mocked_buy_trend = mocker.patch('freqtrade.analyze.populate_buy_trend') def optimizer(params): - buy_strategy = buy_strategy_generator(params) - mocker.patch('freqtrade.analyze.populate_buy_trend', side_effect=buy_strategy) + mocked_buy_trend.side_effect = buy_strategy_generator(params) + results = backtest(conf, pairs, mocker) result = format_results(results)