41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
# tests/factor/test_alpha_datasets.py
|
|
"""Alpha101/158 全量挂载:数量/幂等/类别/表达式可用性."""
|
|
import sys, os
|
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
|
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "vnpy_v4.4.0")))
|
|
|
|
from sanguo_factor.alpha_datasets import mount_all
|
|
from sanguo_factor.registry import list_factors, get_factor, _REGISTRY
|
|
|
|
|
|
def test_mount_all_counts():
|
|
# Clear registry first (factors already registered at module import time)
|
|
_REGISTRY.clear()
|
|
counts = mount_all()
|
|
assert counts == {"alpha101": 82, "alpha158": 158}
|
|
|
|
|
|
def test_categories_and_expression():
|
|
mount_all()
|
|
a101 = list_factors("alpha101")
|
|
assert {f["name"] for f in a101} >= {"alpha1", "alpha2", "alpha5"}
|
|
assert get_factor("alpha5")["expression"].count("vwap") >= 1 # alpha5 显式用 vwap
|
|
a158 = list_factors("alpha158")
|
|
names = {f["name"] for f in a158}
|
|
assert {"kmid", "klen", "roc_5", "ma_20", "std_20", "wvma_20", "vwap_0"} <= names
|
|
|
|
|
|
def test_mount_idempotent():
|
|
# Clear registry and mount fresh
|
|
_REGISTRY.clear()
|
|
mount_all()
|
|
n_before = len(_REGISTRY)
|
|
mount_all()
|
|
assert len(_REGISTRY) == n_before
|
|
|
|
|
|
def test_import_side_effect_registers():
|
|
# sanguo_factor 包导入即挂载(下游 /factor/list 依赖)
|
|
import sanguo_factor
|
|
assert len(list_factors("alpha101")) == 82
|