diff --git a/tests/conftest.py b/tests/conftest.py index 81358e003..a007aeb7e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -891,8 +891,8 @@ def tickers(): @pytest.fixture -def result(): - with Path('freqtrade/tests/testdata/UNITTEST_BTC-1m.json').open('r') as data_file: +def result(testdatadir): + with (testdatadir / 'UNITTEST_BTC-1m.json').open('r') as data_file: return parse_ticker_dataframe(json.load(data_file), '1m', pair="UNITTEST/BTC", fill_missing=True) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index e95757d4e..18326226c 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -12,7 +12,7 @@ from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, load_backtest_data, load_trades, load_trades_from_db) from freqtrade.data.history import load_data, load_pair_history -from freqtrade.tests.test_persistence import create_mock_trades +from tests.test_persistence import create_mock_trades def test_load_backtest_data(testdatadir): diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index d47c3ee92..72da47e76 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -3,7 +3,7 @@ import logging from freqtrade.data.converter import parse_ticker_dataframe, ohlcv_fill_up_missing_data from freqtrade.data.history import load_pair_history, validate_backtest_data, get_timeframe -from freqtrade.tests.conftest import log_has +from tests.conftest import log_has def test_dataframe_correct_columns(result): diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index 441e242f8..ec176d889 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -4,7 +4,7 @@ from pandas import DataFrame from freqtrade.data.dataprovider import DataProvider from freqtrade.state import RunMode -from freqtrade.tests.conftest import get_patched_exchange +from tests.conftest import get_patched_exchange def test_ohlcv(mocker, default_conf, ticker_history): diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 252c73a4e..857967f39 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -22,7 +22,7 @@ from freqtrade.data.history import (download_pair_history, from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import file_dump_json from freqtrade.strategy.default_strategy import DefaultStrategy -from freqtrade.tests.conftest import get_patched_exchange, log_has, log_has_re, patch_exchange +from tests.conftest import get_patched_exchange, log_has, log_has_re, patch_exchange # Change this if modifying UNITTEST/BTC testdatafile _BTC_UNITTEST_LENGTH = 13681 diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index d30285a95..d5f282d7b 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -14,10 +14,9 @@ from freqtrade import OperationalException from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.edge import Edge, PairInfo from freqtrade.strategy.interface import SellType -from freqtrade.tests.conftest import get_patched_freqtradebot, log_has -from freqtrade.tests.optimize import (BTContainer, BTrade, - _build_backtest_dataframe, - _get_frame_time_from_offset) +from tests.conftest import get_patched_freqtradebot, log_has +from tests.optimize import (BTContainer, BTrade, _build_backtest_dataframe, + _get_frame_time_from_offset) # Cases to be tested: # 1) Open trade should be removed from the end diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index 6518c8523..7720a7d2e 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -6,7 +6,7 @@ import pytest from freqtrade import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) -from freqtrade.tests.conftest import get_patched_exchange +from tests.conftest import get_patched_exchange def test_stoploss_limit_order(default_conf, mocker): diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 1fd045f54..e23db42d2 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -20,7 +20,7 @@ from freqtrade.exchange.exchange import (API_RETRY_COUNT, timeframe_to_minutes, timeframe_to_prev_date, timeframe_to_seconds) from freqtrade.resolvers.exchange_resolver import ExchangeResolver -from freqtrade.tests.conftest import get_patched_exchange, log_has, log_has_re +from tests.conftest import get_patched_exchange, log_has, log_has_re # Make sure to always keep one exchange here which is NOT subclassed!! EXCHANGES = ['bittrex', 'binance', 'kraken', ] diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py index 8f476affb..ba94f8b45 100644 --- a/tests/exchange/test_kraken.py +++ b/tests/exchange/test_kraken.py @@ -3,7 +3,7 @@ from random import randint from unittest.mock import MagicMock -from freqtrade.tests.conftest import get_patched_exchange +from tests.conftest import get_patched_exchange def test_buy_kraken_trading_agreement(default_conf, mocker): diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index 87f567b4f..8cd88a479 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -8,11 +8,9 @@ from pandas import DataFrame from freqtrade.data.history import get_timeframe from freqtrade.optimize.backtesting import Backtesting from freqtrade.strategy.interface import SellType -from freqtrade.tests.conftest import patch_exchange -from freqtrade.tests.optimize import (BTContainer, BTrade, - _build_backtest_dataframe, - _get_frame_time_from_offset, - tests_ticker_interval) +from tests.conftest import patch_exchange +from tests.optimize import (BTContainer, BTrade, _build_backtest_dataframe, + _get_frame_time_from_offset, tests_ticker_interval) # Test 0: Sell with signal sell in candle 3 # Test with Stop-loss at 1% diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index b1b6dfa06..34c0322cb 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -22,9 +22,8 @@ from freqtrade.optimize.backtesting import Backtesting from freqtrade.state import RunMode from freqtrade.strategy.default_strategy import DefaultStrategy from freqtrade.strategy.interface import SellType -from freqtrade.tests.conftest import (get_args, log_has, log_has_re, - patch_exchange, - patched_configuration_load_config_file) +from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, + patched_configuration_load_config_file) def trim_dictlist(dict_list, num): @@ -807,7 +806,7 @@ def test_backtest_record(default_conf, fee, mocker): assert dur > 0 -def test_backtest_start_timerange(default_conf, mocker, caplog): +def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] async def load_pairs(pair, timeframe, since): @@ -824,7 +823,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog): args = [ '--config', 'config.json', '--strategy', 'DefaultStrategy', - '--datadir', 'freqtrade/tests/testdata', + '--datadir', str(testdatadir), 'backtesting', '--ticker-interval', '1m', '--timerange', '-100', @@ -838,7 +837,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog): 'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', 'Ignoring max_open_trades (--disable-max-market-positions was used) ...', 'Parameter --timerange detected: -100 ...', - 'Using data directory: freqtrade/tests/testdata ...', + f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' @@ -850,7 +849,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog): assert log_has(line, caplog) -def test_backtest_start_multi_strat(default_conf, mocker, caplog): +def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] async def load_pairs(pair, timeframe, since): @@ -870,7 +869,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog): args = [ '--config', 'config.json', - '--datadir', 'freqtrade/tests/testdata', + '--datadir', str(testdatadir), 'backtesting', '--ticker-interval', '1m', '--timerange', '-100', @@ -892,7 +891,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog): 'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', 'Ignoring max_open_trades (--disable-max-market-positions was used) ...', 'Parameter --timerange detected: -100 ...', - 'Using data directory: freqtrade/tests/testdata ...', + f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py index 25ad48e43..f312bba2c 100644 --- a/tests/optimize/test_edge_cli.py +++ b/tests/optimize/test_edge_cli.py @@ -9,9 +9,8 @@ from freqtrade.edge import PairInfo from freqtrade.optimize import setup_configuration, start_edge from freqtrade.optimize.edge_cli import EdgeCli from freqtrade.state import RunMode -from freqtrade.tests.conftest import (get_args, log_has, log_has_re, - patch_exchange, - patched_configuration_load_config_file) +from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, + patched_configuration_load_config_file) def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> None: diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index a6f0e47e7..eec9e7c19 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -1,13 +1,13 @@ # pragma pylint: disable=missing-docstring,W0212,C0103 import os from datetime import datetime +from pathlib import Path from unittest.mock import MagicMock, PropertyMock import pandas as pd import pytest from arrow import Arrow from filelock import Timeout -from pathlib import Path from freqtrade import OperationalException from freqtrade.data.converter import parse_ticker_dataframe @@ -16,12 +16,12 @@ from freqtrade.optimize import setup_configuration, start_hyperopt from freqtrade.optimize.default_hyperopt import DefaultHyperOpts from freqtrade.optimize.default_hyperopt_loss import DefaultHyperOptLoss from freqtrade.optimize.hyperopt import Hyperopt -from freqtrade.resolvers.hyperopt_resolver import HyperOptResolver, HyperOptLossResolver +from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver, + HyperOptResolver) from freqtrade.state import RunMode from freqtrade.strategy.interface import SellType -from freqtrade.tests.conftest import (get_args, log_has, log_has_re, - patch_exchange, - patched_configuration_load_config_file) +from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, + patched_configuration_load_config_file) @pytest.fixture(scope='function') @@ -47,14 +47,14 @@ def hyperopt_results(): # Functions for recurrent object patching -def create_trials(mocker, hyperopt) -> None: +def create_trials(mocker, hyperopt, testdatadir) -> None: """ When creating trials, mock the hyperopt Trials so that *by default* - we don't create any pickle'd files in the filesystem - we might have a pickle'd file so make sure that we return false when looking for it """ - hyperopt.trials_file = Path('freqtrade/tests/optimize/ut_trials.pickle') + hyperopt.trials_file = testdatadir / '/optimize/ut_trials.pickle' mocker.patch.object(Path, "is_file", MagicMock(return_value=False)) stat_mock = MagicMock() diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index e7439bb51..411ae60a3 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -5,7 +5,7 @@ from unittest.mock import MagicMock, PropertyMock from freqtrade import OperationalException from freqtrade.constants import AVAILABLE_PAIRLISTS from freqtrade.resolvers import PairListResolver -from freqtrade.tests.conftest import get_patched_freqtradebot +from tests.conftest import get_patched_freqtradebot import pytest # whitelist, blacklist diff --git a/tests/rpc/test_fiat_convert.py b/tests/rpc/test_fiat_convert.py index 1689ecac6..8f6b2eb93 100644 --- a/tests/rpc/test_fiat_convert.py +++ b/tests/rpc/test_fiat_convert.py @@ -8,7 +8,7 @@ import pytest from requests.exceptions import RequestException from freqtrade.rpc.fiat_convert import CryptoFiat, CryptoToFiatConverter -from freqtrade.tests.conftest import log_has +from tests.conftest import log_has def test_pair_convertion_object(): diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 47ed34a58..ff5869009 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -14,7 +14,7 @@ from freqtrade.persistence import Trade from freqtrade.rpc import RPC, RPCException from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.state import State -from freqtrade.tests.conftest import patch_exchange, patch_get_signal +from tests.conftest import patch_exchange, patch_get_signal # Functions for recurrent object patching diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index bcbbb228f..b572a0514 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -13,9 +13,7 @@ from freqtrade.__init__ import __version__ from freqtrade.persistence import Trade from freqtrade.rpc.api_server import BASE_URI, ApiServer from freqtrade.state import State -from freqtrade.tests.conftest import (get_patched_freqtradebot, log_has, - patch_get_signal) - +from tests.conftest import get_patched_freqtradebot, log_has, patch_get_signal _TEST_USER = "FreqTrader" _TEST_PASS = "SuperSecurePassword1!" diff --git a/tests/rpc/test_rpc_manager.py b/tests/rpc/test_rpc_manager.py index d34d76524..7278f0671 100644 --- a/tests/rpc/test_rpc_manager.py +++ b/tests/rpc/test_rpc_manager.py @@ -4,7 +4,7 @@ import logging from unittest.mock import MagicMock from freqtrade.rpc import RPCMessageType, RPCManager -from freqtrade.tests.conftest import log_has, get_patched_freqtradebot +from tests.conftest import log_has, get_patched_freqtradebot def test__init__(mocker, default_conf) -> None: diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 3930b110d..cf741a7ea 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -21,8 +21,8 @@ from freqtrade.rpc import RPCMessageType from freqtrade.rpc.telegram import Telegram, authorized_only from freqtrade.state import State from freqtrade.strategy.interface import SellType -from freqtrade.tests.conftest import (get_patched_freqtradebot, log_has, - patch_exchange, patch_get_signal) +from tests.conftest import (get_patched_freqtradebot, log_has, patch_exchange, + patch_get_signal) class DummyCls(Telegram): diff --git a/tests/rpc/test_rpc_webhook.py b/tests/rpc/test_rpc_webhook.py index 1c6c07e16..dbbc4cefb 100644 --- a/tests/rpc/test_rpc_webhook.py +++ b/tests/rpc/test_rpc_webhook.py @@ -8,7 +8,7 @@ from requests import RequestException from freqtrade.rpc import RPCMessageType from freqtrade.rpc.webhook import Webhook from freqtrade.strategy.interface import SellType -from freqtrade.tests.conftest import get_patched_freqtradebot, log_has +from tests.conftest import get_patched_freqtradebot, log_has def get_webhook_dict() -> dict: diff --git a/tests/strategy/test_default_strategy.py b/tests/strategy/test_default_strategy.py index 74c81882a..17d6b8ee0 100644 --- a/tests/strategy/test_default_strategy.py +++ b/tests/strategy/test_default_strategy.py @@ -1,19 +1,8 @@ -import json - -import pytest from pandas import DataFrame -from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.strategy.default_strategy import DefaultStrategy -@pytest.fixture -def result(): - with open('freqtrade/tests/testdata/ETH_BTC-1m.json') as data_file: - return parse_ticker_dataframe(json.load(data_file), '1m', pair="UNITTEST/BTC", - fill_missing=True) - - def test_default_strategy_structure(): assert hasattr(DefaultStrategy, 'minimal_roi') assert hasattr(DefaultStrategy, 'stoploss') diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 1bd571870..094cd41a1 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -10,7 +10,7 @@ from freqtrade.configuration import TimeRange from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.history import load_tickerdata_file from freqtrade.persistence import Trade -from freqtrade.tests.conftest import get_patched_exchange, log_has +from tests.conftest import get_patched_exchange, log_has from freqtrade.strategy.default_strategy import DefaultStrategy # Avoid to reinit the same object again and again diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 24ec830a0..6992d1aa5 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -12,12 +12,12 @@ from pandas import DataFrame from freqtrade import OperationalException from freqtrade.resolvers import StrategyResolver from freqtrade.strategy.interface import IStrategy -from freqtrade.tests.conftest import log_has, log_has_re +from tests.conftest import log_has, log_has_re def test_search_strategy(): default_config = {} - default_location = Path(__file__).parent.parent.parent.joinpath('strategy').resolve() + default_location = Path(__file__).parent.parent.joinpath('strategy').resolve() s, _ = StrategyResolver._search_object( directory=default_location, diff --git a/tests/test_configuration.py b/tests/test_configuration.py index faf0e4c5f..e6532cecc 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -10,7 +10,8 @@ import pytest from jsonschema import Draft4Validator, ValidationError, validate from freqtrade import OperationalException, constants -from freqtrade.configuration import Arguments, Configuration, validate_config_consistency +from freqtrade.configuration import (Arguments, Configuration, + validate_config_consistency) from freqtrade.configuration.check_exchange import check_exchange from freqtrade.configuration.config_validation import validate_config_schema from freqtrade.configuration.directory_operations import (create_datadir, @@ -19,8 +20,8 @@ from freqtrade.configuration.load_config import load_config_file from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.loggers import _set_loggers from freqtrade.state import RunMode -from freqtrade.tests.conftest import (log_has, log_has_re, - patched_configuration_load_config_file) +from tests.conftest import (log_has, log_has_re, + patched_configuration_load_config_file) @pytest.fixture(scope="function") diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 83b1d3107..4ffa863e6 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -16,13 +16,12 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade from freqtrade.rpc import RPCMessageType -from freqtrade.state import State, RunMode +from freqtrade.state import RunMode, State from freqtrade.strategy.interface import SellCheckTuple, SellType -from freqtrade.tests.conftest import (get_patched_freqtradebot, - get_patched_worker, log_has, log_has_re, - patch_edge, patch_exchange, - patch_get_signal, patch_wallet) from freqtrade.worker import Worker +from tests.conftest import (get_patched_freqtradebot, get_patched_worker, + log_has, log_has_re, patch_edge, patch_exchange, + patch_get_signal, patch_wallet) def patch_RPCManager(mocker) -> MagicMock: diff --git a/tests/test_main.py b/tests/test_main.py index a0fd8218b..d6fafe09b 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -10,7 +10,7 @@ from freqtrade.configuration import Arguments from freqtrade.freqtradebot import FreqtradeBot from freqtrade.main import main from freqtrade.state import State -from freqtrade.tests.conftest import (log_has, patch_exchange, +from tests.conftest import (log_has, patch_exchange, patched_configuration_load_config_file) from freqtrade.worker import Worker diff --git a/tests/test_persistence.py b/tests/test_persistence.py index c3ab7c128..85c244f7a 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -8,7 +8,7 @@ from sqlalchemy import create_engine from freqtrade import OperationalException, constants from freqtrade.persistence import Trade, clean_dry_run_db, init -from freqtrade.tests.conftest import log_has +from tests.conftest import log_has def create_mock_trades(fee): diff --git a/tests/test_plotting.py b/tests/test_plotting.py index a4abda98b..465e3462d 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -19,7 +19,7 @@ from freqtrade.plot.plotting import (add_indicators, add_profit, generate_profit_graph, init_plotscript, plot_profit, plot_trades, store_plot_file) from freqtrade.strategy.default_strategy import DefaultStrategy -from freqtrade.tests.conftest import get_args, log_has, log_has_re +from tests.conftest import get_args, log_has, log_has_re def fig_generating_mock(fig, *args, **kwargs): diff --git a/tests/test_utils.py b/tests/test_utils.py index 9e09fd298..386efb5ec 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -4,7 +4,7 @@ from unittest.mock import MagicMock, PropertyMock import pytest from freqtrade.state import RunMode -from freqtrade.tests.conftest import get_args, log_has, patch_exchange +from tests.conftest import get_args, log_has, patch_exchange from freqtrade.utils import (setup_utils_configuration, start_create_userdir, start_download_data, start_list_exchanges) diff --git a/tests/test_wallets.py b/tests/test_wallets.py index 2c493cfc3..ae2810a2d 100644 --- a/tests/test_wallets.py +++ b/tests/test_wallets.py @@ -1,5 +1,5 @@ # pragma pylint: disable=missing-docstring -from freqtrade.tests.conftest import get_patched_freqtradebot +from tests.conftest import get_patched_freqtradebot from unittest.mock import MagicMock