From 076ca7520096c7533408a83151bbd5eef5f7b6a5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jan 2024 14:52:05 +0100 Subject: [PATCH] Slightly refactor pairlist test --- tests/plugins/test_pairlist.py | 82 +++++++++++++--------------------- 1 file changed, 30 insertions(+), 52 deletions(-) diff --git a/tests/plugins/test_pairlist.py b/tests/plugins/test_pairlist.py index 6bef0456f..e19968482 100644 --- a/tests/plugins/test_pairlist.py +++ b/tests/plugins/test_pairlist.py @@ -1515,7 +1515,34 @@ def test_FullTradesFilter(mocker, default_conf_usdt, fee, caplog) -> None: assert log_has_re(r'Whitelist with 0 pairs: \[]', caplog) -def test_MarketCapPairList_filter(mocker, default_conf_usdt): +@pytest.mark.parametrize('pairlists,result', [ + ([ + # Test top 2 mc + {"method": "StaticPairList", "allow_inactive": True}, + {"method": "MarketCapPairList", "mode": "top_rank", "number_assets": 2} + ], ['ETH/USDT', 'BTC/USDT']), + ([ + # Test top 6 mc + {"method": "StaticPairList", "allow_inactive": True}, + {"method": "MarketCapPairList", "mode": "top_rank", "number_assets": 6} + ], ['ETH/USDT', 'XRP/USDT', 'BTC/USDT']), + ([ + # Test total assets mode, 2 assets + {"method": "StaticPairList", "allow_inactive": True}, + {"method": "MarketCapPairList", "mode": "total_assets", "number_assets": 2} + ], ['BTC/USDT', 'ETH/USDT']), + + ([ + # Test total assets mode, 5 assets + {"method": "StaticPairList", "allow_inactive": True}, + {"method": "MarketCapPairList", "mode": "total_assets", "number_assets": 5} + ], ['BTC/USDT', 'ETH/USDT', 'XRP/USDT']), + ([ + # MarketCapPairList as generator + {"method": "MarketCapPairList", "mode": "total_assets", "number_assets": 5} + ], ['ETH/USDT', 'XRP/USDT']) +]) +def test_MarketCapPairList_filter(mocker, default_conf_usdt, pairlists, result): test_value = [ { "symbol": "btc", @@ -1549,13 +1576,9 @@ def test_MarketCapPairList_filter(mocker, default_conf_usdt): } ] - # Test top 2 mc default_conf_usdt['exchange']['pair_whitelist'].extend(['BTC/USDT', 'ETC/USDT']) default_conf_usdt['trading_mode'] = 'spot' - default_conf_usdt['pairlists'] = [ - {"method": "StaticPairList", "allow_inactive": True}, - {"method": "MarketCapPairList", "mode": "top_rank", "number_assets": 2} - ] + default_conf_usdt['pairlists'] = pairlists mocker.patch(f'{EXMS}.exchange_has', MagicMock(return_value=True)) mocker.patch("freqtrade.plugins.pairlist.MarketCapPairList.CoinGeckoAPI.get_coins_markets", @@ -1564,51 +1587,6 @@ def test_MarketCapPairList_filter(mocker, default_conf_usdt): exchange = get_patched_exchange(mocker, default_conf_usdt) pm = PairListManager(exchange, default_conf_usdt) - - pm.refresh_pairlist() - - whitelist = ['ETH/USDT', 'BTC/USDT'] - - assert whitelist == pm.whitelist - - # Test top 6 mc - default_conf_usdt['pairlists'] = [ - {"method": "StaticPairList", "allow_inactive": True}, - {"method": "MarketCapPairList", "mode": "top_rank", "number_assets": 6} - ] - - pm = PairListManager(exchange, default_conf_usdt) - - pm.refresh_pairlist() - - whitelist = ['ETH/USDT', 'XRP/USDT', 'BTC/USDT'] - - assert whitelist == pm.whitelist - - # Test total assets mode, 2 assets - default_conf_usdt['pairlists'] = [ - {"method": "StaticPairList", "allow_inactive": True}, - {"method": "MarketCapPairList", "mode": "total_assets", "number_assets": 2} - ] - - pm = PairListManager(exchange, default_conf_usdt) - pm.refresh_pairlist() - whitelist = ['BTC/USDT', 'ETH/USDT'] - - assert whitelist == pm.whitelist - - # Test total assets mode, 5 assets - default_conf_usdt['pairlists'] = [ - {"method": "StaticPairList", "allow_inactive": True}, - {"method": "MarketCapPairList", "mode": "total_assets", "number_assets": 5} - ] - - pm = PairListManager(exchange, default_conf_usdt) - - pm.refresh_pairlist() - - whitelist = ['BTC/USDT', 'ETH/USDT', 'XRP/USDT'] - - assert whitelist == pm.whitelist + assert pm.whitelist == result