test: simplified test setup for compat tests

This commit is contained in:
Matthias
2026-02-05 20:10:52 +01:00
parent e5bd33061b
commit 315a1baf2c
2 changed files with 98 additions and 102 deletions
+18 -16
View File
@@ -1,5 +1,6 @@
from copy import deepcopy
from pathlib import Path
from typing import Any
import pytest
@@ -9,7 +10,7 @@ from freqtrade.resolvers.exchange_resolver import ExchangeResolver
from tests.conftest import EXMS, get_default_conf_usdt
EXCHANGE_FIXTURE_TYPE = tuple[Exchange, str]
EXCHANGE_FIXTURE_TYPE = tuple[Exchange, str, dict[str, Any]]
EXCHANGE_WS_FIXTURE_TYPE = tuple[Exchange, str, str]
@@ -565,26 +566,25 @@ def set_test_proxy(config: Config, use_proxy: bool) -> Config:
def get_exchange(exchange_name, exchange_conf):
exchange_conf = set_test_proxy(
exchange_conf, EXCHANGES[exchange_name].get("use_ci_proxy", False)
)
exchange_params = EXCHANGES[exchange_name]
exchange_conf = set_test_proxy(exchange_conf, exchange_params.get("use_ci_proxy", False))
exchange_conf["exchange"]["name"] = exchange_name
exchange_conf["stake_currency"] = EXCHANGES[exchange_name]["stake_currency"]
exchange_conf["stake_currency"] = exchange_params["stake_currency"]
exchange = ExchangeResolver.load_exchange(
exchange_conf, validate=True, load_leverage_tiers=True
)
return exchange, exchange_name
return exchange, exchange_name, exchange_params
def get_futures_exchange(exchange_name, exchange_conf, class_mocker):
if EXCHANGES[exchange_name].get("futures") is not True:
exchange_params = EXCHANGES[exchange_name]
if exchange_params.get("futures") is not True:
pytest.skip(f"Exchange {exchange_name} does not support futures.")
else:
exchange_conf = deepcopy(exchange_conf)
exchange_conf = set_test_proxy(
exchange_conf, EXCHANGES[exchange_name].get("use_ci_proxy", False)
)
exchange_conf = set_test_proxy(exchange_conf, exchange_params.get("use_ci_proxy", False))
exchange_conf["trading_mode"] = "futures"
exchange_conf["margin_mode"] = "isolated"
@@ -600,15 +600,17 @@ def get_futures_exchange(exchange_name, exchange_conf, class_mocker):
@pytest.fixture(params=EXCHANGES, scope="class")
def exchange(request, exchange_conf, class_mocker):
class_mocker.patch(f"{EXMS}.ft_additional_exchange_init")
exchange, name = get_exchange(request.param, exchange_conf)
yield exchange, name
exchange, name, exchange_params = get_exchange(request.param, exchange_conf)
yield exchange, name, exchange_params
exchange.close()
@pytest.fixture(params=EXCHANGES_FUTURES, scope="class")
def exchange_futures(request, exchange_conf, class_mocker):
exchange, name = get_futures_exchange(request.param, exchange_conf, class_mocker)
yield exchange, name
exchange, name, exchange_params = get_futures_exchange(
request.param, exchange_conf, class_mocker
)
yield exchange, name, exchange_params
exchange.close()
@@ -625,10 +627,10 @@ def exchange_ws(request, exchange_conf, exchange_mode, class_mocker):
if exchange_param.get("skip_ws_tests"):
pytest.skip(f"{request.param} does not support websocket tests.")
if exchange_mode == "spot":
exchange, name = get_exchange(request.param, exchange_conf)
exchange, name, _ = get_exchange(request.param, exchange_conf)
pair = exchange_param["pair"]
elif exchange_param.get("futures"):
exchange, name = get_futures_exchange(
exchange, name, _ = get_futures_exchange(
request.param, exchange_conf, class_mocker=class_mocker
)
pair = exchange_param["futures_pair"]