# pragma pylint: disable=missing-docstring,W0212 from unittest.mock import MagicMock from freqtrade import exchange, optimize from freqtrade.exchange import Bittrex from freqtrade.optimize.backtesting import backtest from freqtrade.optimize.__init__ import testdata_path, download_pairs, download_backtesting_testdata import os import pytest def test_backtest(default_conf, mocker): mocker.patch.dict('freqtrade.main._CONF', default_conf) exchange._API = Bittrex({'key': '', 'secret': ''}) data = optimize.load_data(ticker_interval=5, pairs=['BTC_ETH']) results = backtest(default_conf, optimize.preprocess(data), 10, True) num_results = len(results) assert num_results > 0 def test_1min_ticker_interval(default_conf, mocker): mocker.patch.dict('freqtrade.main._CONF', default_conf) exchange._API = Bittrex({'key': '', 'secret': ''}) # Run a backtesting for an exiting 5min ticker_interval data = optimize.load_data(ticker_interval=1, pairs=['BTC_UNITEST']) results = backtest(default_conf, optimize.preprocess(data), 1, True) assert len(results) > 0 def test_backtest_with_new_pair(default_conf, ticker_history, mocker): mocker.patch('freqtrade.optimize.get_ticker_history', return_value=ticker_history) mocker.patch.dict('freqtrade.main._CONF', default_conf) exchange._API = Bittrex({'key': '', 'secret': ''}) optimize.load_data(ticker_interval=1, pairs=['BTC_MEME']) file = 'freqtrade/tests/testdata/BTC_MEME-1.json' assert os.path.isfile(file) is True # delete file freshly downloaded if os.path.isfile(file): os.remove(file) def test_testdata_path(): assert str('freqtrade/optimize/../tests/testdata') in testdata_path() def test_download_pairs(default_conf, ticker_history, mocker): mocker.patch('freqtrade.optimize.__init__.get_ticker_history', return_value=ticker_history) mocker.patch.dict('freqtrade.main._CONF', default_conf) exchange._API = Bittrex({'key': '', 'secret': ''}) file1_1 = 'freqtrade/tests/testdata/BTC_MEME-1.json' file1_5 = 'freqtrade/tests/testdata/BTC_MEME-5.json' file2_1 = 'freqtrade/tests/testdata/BTC_CFI-1.json' file2_5 = 'freqtrade/tests/testdata/BTC_CFI-5.json' assert download_pairs(pairs = ['BTC-MEME', 'BTC-CFI']) is True assert os.path.isfile(file1_1) is True assert os.path.isfile(file1_5) is True assert os.path.isfile(file2_1) is True assert os.path.isfile(file2_5) is True # delete files freshly downloaded if os.path.isfile(file1_1): os.remove(file1_1) if os.path.isfile(file1_5): os.remove(file1_5) if os.path.isfile(file2_1): os.remove(file2_1) if os.path.isfile(file2_5): os.remove(file2_5) def test_download_backtesting_testdata(default_conf, ticker_history, mocker): mocker.patch('freqtrade.optimize.__init__.get_ticker_history', return_value=ticker_history) mocker.patch.dict('freqtrade.main._CONF', default_conf) exchange._API = Bittrex({'key': '', 'secret': ''}) # Download a 1 min ticker file file1 = 'freqtrade/tests/testdata/BTC_XEL-1.json' download_backtesting_testdata(pair = "BTC-XEL", interval = 1) assert os.path.isfile(file1) is True if os.path.isfile(file1): os.remove(file1) # Download a 5 min ticker file file2 = 'freqtrade/tests/testdata/BTC_STORJ-5.json' download_backtesting_testdata(pair = "BTC-STORJ", interval = 5) assert os.path.isfile(file2) is True if os.path.isfile(file2): os.remove(file2)