From c70050e75094e08a817d5d30f9adf3e5ce497581 Mon Sep 17 00:00:00 2001 From: Sam Germain Date: Wed, 16 Feb 2022 05:26:52 -0600 Subject: [PATCH] fixed test_load_leverage_tiers --- freqtrade/exchange/binance.py | 33 ++++++++++-------- tests/exchange/test_exchange.py | 62 ++++++++++++++++----------------- 2 files changed, 49 insertions(+), 46 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 3bae2bfe2..ecd56bebf 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -248,19 +248,22 @@ class Binance(Exchange): @retrier def load_leverage_tiers(self) -> Dict[str, List[Dict]]: - if self._config['dry_run']: - leverage_tiers_path = ( - Path(__file__).parent / 'binance_leverage_tiers.json' - ) - with open(leverage_tiers_path) as json_file: - return json.load(json_file) + if self.trading_mode == TradingMode.FUTURES: + if self._config['dry_run']: + leverage_tiers_path = ( + Path(__file__).parent / 'binance_leverage_tiers.json' + ) + with open(leverage_tiers_path) as json_file: + return json.load(json_file) + else: + try: + return self._api.fetch_leverage_tiers() + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e + except (ccxt.NetworkError, ccxt.ExchangeError) as e: + raise TemporaryError(f'Could not fetch leverage amounts due to' + f'{e.__class__.__name__}. Message: {e}') from e + except ccxt.BaseError as e: + raise OperationalException(e) from e else: - try: - return self._api.fetch_leverage_tiers() - except ccxt.DDoSProtection as e: - raise DDosProtection(e) from e - except (ccxt.NetworkError, ccxt.ExchangeError) as e: - raise TemporaryError(f'Could not fetch leverage amounts due to' - f'{e.__class__.__name__}. Message: {e}') from e - except ccxt.BaseError as e: - raise OperationalException(e) from e + return {} diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 5c44aa5b4..5a78b26d2 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -4236,54 +4236,54 @@ def test_get_max_pair_stake_amount( assert exchange.get_max_pair_stake_amount('ADA/USDT', 2.0) == 500 -def test_load_leverage_tiers(mocker, default_conf, leverage_tiers): +@pytest.mark.parametrize('exchange_name', EXCHANGES) +def test_load_leverage_tiers(mocker, default_conf, leverage_tiers, exchange_name): api_mock = MagicMock() api_mock.fetch_leverage_tiers = MagicMock() type(api_mock).has = PropertyMock(return_value={'fetchLeverageTiers': True}) default_conf['dry_run'] = False + mocker.patch('freqtrade.exchange.exchange.Exchange.validate_trading_mode_and_margin_mode') - api_mock.fetch_leverage_tiers = MagicMock(return_value=[ - { - 'ADA/USDT:USDT': [ - { - 'tier': 1, - 'notionalFloor': 0, - 'notionalCap': 500, - 'maintenanceMarginRatio': 0.02, - 'maxLeverage': 75, - 'info': { - 'baseMaxLoan': '', - 'imr': '0.013', - 'instId': '', - 'maxLever': '75', - 'maxSz': '500', - 'minSz': '0', - 'mmr': '0.01', - 'optMgnFactor': '0', - 'quoteMaxLoan': '', - 'tier': '1', - 'uly': 'ADA-USDT' - } - }, - ] - } - ]) + api_mock.fetch_leverage_tiers = MagicMock(return_value={ + 'ADA/USDT:USDT': [ + { + 'tier': 1, + 'notionalFloor': 0, + 'notionalCap': 500, + 'maintenanceMarginRatio': 0.02, + 'maxLeverage': 75, + 'info': { + 'baseMaxLoan': '', + 'imr': '0.013', + 'instId': '', + 'maxLever': '75', + 'maxSz': '500', + 'minSz': '0', + 'mmr': '0.01', + 'optMgnFactor': '0', + 'quoteMaxLoan': '', + 'tier': '1', + 'uly': 'ADA-USDT' + } + }, + ] + }) # SPOT - exchange = get_patched_exchange(mocker, default_conf, api_mock) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) assert exchange.load_leverage_tiers() == {} # FUTURES has.fetchLeverageTiers == False default_conf['trading_mode'] = 'futures' default_conf['margin_mode'] = 'isolated' - exchange = get_patched_exchange(mocker, default_conf, api_mock) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) type(api_mock).has = PropertyMock(return_value={'fetchLeverageTiers': False}) exchange = get_patched_exchange(mocker, default_conf, api_mock) assert exchange.load_leverage_tiers() == {} # FUTURES regular type(api_mock).has = PropertyMock(return_value={'fetchLeverageTiers': True}) - exchange = get_patched_exchange(mocker, default_conf, api_mock) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) assert exchange.load_leverage_tiers() == { 'ADA/USDT:USDT': [ { @@ -4313,7 +4313,7 @@ def test_load_leverage_tiers(mocker, default_conf, leverage_tiers): mocker, default_conf, api_mock, - "ftx", + exchange_name, "load_leverage_tiers", "fetch_leverage_tiers", )