SHA256
- sector.py: 删除行业/地域抓取,只保留概念板块;加分页获取全量486个概念、成分股过滤仅A股、请求重试 - index.py/intraday.py: 改用交易日缺口检测替代±5天窗口 - financial.py: 精确到缺失季度而非重抓全部8季度 - dividend.py: 精确到缺失年份而非有记录就跳过 - stock_list.py: 加已有数据量日志 - main.py: 删除 --industry-only/--region-only/--concept-only 参数 - .gitignore: 精简为项目实际规则 - 从 git 移除 config.yaml(含密码)和 logs/ 日志文件 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
"""验证 sector.fetch_sector 概念板块抓取逻辑"""
|
|
|
|
from unittest.mock import patch, MagicMock
|
|
|
|
from src.fetchers import sector
|
|
|
|
|
|
def test_concept_skips_when_enough_data():
|
|
"""已有 >= 450 个概念时,跳过抓取"""
|
|
mock_session = MagicMock()
|
|
mock_session.execute.side_effect = [MagicMock(scalar=MagicMock(return_value=150000)),
|
|
MagicMock(scalar=MagicMock(return_value=460))]
|
|
with patch.object(sector, "get_session", return_value=mock_session), \
|
|
patch.object(sector, "_fetch_concept_list") as mock_list:
|
|
sector.fetch_sector()
|
|
|
|
mock_list.assert_not_called()
|
|
|
|
|
|
def test_concept_fetches_when_insufficient():
|
|
"""概念数 < 300 时,执行抓取"""
|
|
mock_session = MagicMock()
|
|
mock_session.execute.side_effect = [MagicMock(scalar=MagicMock(return_value=0)),
|
|
MagicMock(scalar=MagicMock(return_value=0))]
|
|
|
|
with patch.object(sector, "get_session", return_value=mock_session), \
|
|
patch.object(sector, "_fetch_concept_list", return_value=[]):
|
|
sector.fetch_sector()
|