Files
DjangoAdmin_Flask_NaiveVue/tests/unit/test_modules/test_job_service.py
T
2026-09-12 22:24:53 +08:00

50 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
定时任务服务测试(F4 调度器入参修复)
=============================================================
验证 JobService 与调度器的联动契约:
- add_job_to_scheduler 应收到 dict(驼峰键,含 cronExpression/id/status),
而非 ORM 实例(原实现传 ORM 实例 → AttributeError 被吞 → 任务永不注册)
"""
from src.core.database import db
from src.modules.job.service import JobService
def _job_payload():
"""构造合法任务表单数据(isSync=0 异步:回归验证 DataRequired→Optional 修复)"""
return {
"jobName": "test_job",
"status": 1,
"executePolicy": 1,
"isSync": 0,
"cronExpression": "0 2 * * *",
"url": "http://localhost/api/v1/notify",
"note": "测试",
}
class TestJobSchedulerDict:
"""调度器入参应为驼峰 dict"""
def test_add_passes_dict_to_scheduler(self, app, monkeypatch):
captured = {}
def fake_add(job_dict):
captured["arg"] = job_dict
return True
monkeypatch.setattr("src.modules.job.service.add_job_to_scheduler", fake_add)
with app.app_context():
JobService.add(_job_payload())
db.session.commit()
assert "arg" in captured
arg = captured["arg"]
# 必须是 dict 且含调度器所需驼峰键(原 ORM 实例无 .get → AttributeError)
assert isinstance(arg, dict)
assert arg["cronExpression"] == "0 2 * * *"
assert arg["status"] == 1
assert arg["id"] is not None