37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
"""Tests for 个股回测费用接入 + benchmark 放宽 (Task D).
|
||
|
||
schema 层本地可跑(pydantic);_build_fee_cfg 走 routes→auth→jwt,需 NAS docker 或齐后端 venv。
|
||
"""
|
||
from sanguo_api.schemas import CtaBacktestRequest
|
||
|
||
|
||
def test_slippage_field_present():
|
||
req = CtaBacktestRequest(
|
||
symbol="600519.SH", strategy="DoubleMaStrategy", start="2024-01-02", end="2024-06-28",
|
||
slippage=0.001,
|
||
)
|
||
assert req.slippage == 0.001
|
||
assert req.commission_rate == 0.00025 # 默认仍在
|
||
|
||
|
||
def test_benchmark_accepts_four_values():
|
||
for b in ("hs300", "zz500", "zz1000", "zz2000"):
|
||
req = CtaBacktestRequest(
|
||
symbol="600519.SH", strategy="DoubleMaStrategy",
|
||
start="2024-01-02", end="2024-06-28", benchmark=b,
|
||
)
|
||
assert req.benchmark == b
|
||
|
||
|
||
def test_build_fee_cfg_carries_all_fields():
|
||
from sanguo_api.routes import _build_fee_cfg
|
||
req = CtaBacktestRequest(
|
||
symbol="600519.SH", strategy="DoubleMaStrategy", start="2024-01-02", end="2024-06-28",
|
||
commission_rate=0.0003, stamp_duty_rate=0.001, slippage=0.001,
|
||
)
|
||
cfg = _build_fee_cfg(req)
|
||
assert cfg["commission_rate"] == 0.0003
|
||
assert cfg["stamp_duty_rate"] == 0.001
|
||
assert cfg["slippage"] == 0.001
|
||
assert "min_commission" in cfg and "transfer_fee_rate" in cfg
|