"""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