Skip to content

Commit 7d8393e

Browse files
committed
Make gateway symbol-info test self-contained
1 parent 3dfca5e commit 7d8393e

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

tests/unit/stores/test_btapistore.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
"""Unit tests for the unified BtApiStore."""
22

33
import datetime as dt
4+
import sys
45
import time
6+
import types
57

68
import pytest
79

@@ -10,8 +12,8 @@
1012
from backtrader.stores.btapistore import (
1113
BtApiMissingDependencyError,
1214
BtApiProviderNotImplementedError,
13-
BtApiStoreError,
1415
BtApiStore,
16+
BtApiStoreError,
1517
_build_ctp_tick_datetime,
1618
_create_ctp_gateway_wrapper_class,
1719
_create_ctp_wrapper_class,
@@ -24,8 +26,8 @@
2426
FakeBtApiClient,
2527
make_bar,
2628
make_orderbook,
27-
make_tick,
2829
make_store,
30+
make_tick,
2931
)
3032

3133

@@ -2217,9 +2219,7 @@ def cancel_order(self, order_ref, dataname=None):
22172219
event_types = [event["event_type"] for event in runtime_events]
22182220
assert "order_cancel_request" in event_types
22192221
assert "order_cancel_submitted" in event_types
2220-
assert event_types.index("order_cancel_request") < event_types.index(
2221-
"order_cancel_submitted"
2222-
)
2222+
assert event_types.index("order_cancel_request") < event_types.index("order_cancel_submitted")
22232223
submitted = next(
22242224
event for event in runtime_events if event["event_type"] == "order_cancel_submitted"
22252225
)
@@ -3017,7 +3017,9 @@ def test_store_broker_runtime_trade_event_preserves_fee_and_liquidity_fields():
30173017

30183018
assert update["trade_fee"] == pytest.approx(0.12)
30193019
runtime_events = [kwargs["event"] for _msg, _args, kwargs in store.get_notifications()]
3020-
trade_event = next(event for event in runtime_events if event["event_type"] == "trade_execution")
3020+
trade_event = next(
3021+
event for event in runtime_events if event["event_type"] == "trade_execution"
3022+
)
30213023
assert trade_event["order_ref"] == "ex-7"
30223024
assert trade_event["details"]["trade_fee"] == pytest.approx(0.12)
30233025
assert trade_event["details"]["trade_commission"] == pytest.approx(0.12)
@@ -3584,7 +3586,6 @@ def test_gateway_wrapper_fetch_bars_proxies(fake_client):
35843586

35853587
def test_ctp_gateway_wrapper_symbol_info_accepts_get_symbol_info_alias(monkeypatch):
35863588
"""Gateway wrapper should expose exchange asset specs from either symbol-info alias."""
3587-
import bt_api_py.gateway.client as gateway_client_module
35883589

35893590
class SymbolInfoGatewayClient:
35903591
def __init__(self, **kwargs):
@@ -3599,7 +3600,16 @@ def get_symbol_info(self, symbol):
35993600
"taker_fee_rate": 0.0005,
36003601
}
36013602

3602-
monkeypatch.setattr(gateway_client_module, "GatewayClient", SymbolInfoGatewayClient)
3603+
bt_api_module = types.ModuleType("bt_api_py")
3604+
gateway_module = types.ModuleType("bt_api_py.gateway")
3605+
gateway_client_module = types.ModuleType("bt_api_py.gateway.client")
3606+
gateway_client_module.GatewayClient = SymbolInfoGatewayClient
3607+
gateway_module.client = gateway_client_module
3608+
bt_api_module.gateway = gateway_module
3609+
monkeypatch.setitem(sys.modules, "bt_api_py", bt_api_module)
3610+
monkeypatch.setitem(sys.modules, "bt_api_py.gateway", gateway_module)
3611+
monkeypatch.setitem(sys.modules, "bt_api_py.gateway.client", gateway_client_module)
3612+
36033613
wrapper_cls = _create_ctp_gateway_wrapper_class()
36043614
client = wrapper_cls(account_id="acc-1")
36053615

0 commit comments

Comments
 (0)