补充Mock规则命中模式启动参数

This commit is contained in:
wkc
2026-03-22 12:59:12 +08:00
parent 07ed6c76c5
commit e6809c67fe
4 changed files with 67 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
from pydantic_settings import BaseSettings
from pathlib import Path
import re
from typing import Literal
def _load_ruoyi_mysql_defaults() -> dict:
@@ -42,6 +43,7 @@ class Settings(BaseSettings):
# 模拟配置
PARSE_DELAY_SECONDS: int = 4 # 文件解析延迟秒数
MAX_FILE_SIZE: int = 10485760 # 10MB
RULE_HIT_MODE: Literal["subset", "all"] = "subset"
# 测试数据配置
INITIAL_PROJECT_ID: int = 1000

29
lsfx-mock-server/dev.py Normal file
View File

@@ -0,0 +1,29 @@
import argparse
import uvicorn
from config.settings import settings
from main import apply_rule_hit_mode
def parse_args(argv=None):
parser = argparse.ArgumentParser()
parser.add_argument("--reload", action="store_true")
parser.add_argument("--rule-hit-mode", choices=["subset", "all"], default="subset")
return parser.parse_args(argv)
def main():
args = parse_args()
apply_rule_hit_mode(args.rule_hit_mode)
uvicorn.run(
"main:app",
host=settings.HOST,
port=settings.PORT,
log_level="debug" if settings.DEBUG else "info",
reload=args.reload,
)
if __name__ == "__main__":
main()

View File

@@ -3,6 +3,9 @@
基于 FastAPI 实现的 Mock 服务器,用于模拟流水分析平台的 7 个核心接口
"""
import argparse
import os
from fastapi import FastAPI
from routers import api
from config.settings import settings
@@ -68,9 +71,23 @@ async def health_check():
}
def parse_args(argv=None):
parser = argparse.ArgumentParser()
parser.add_argument("--rule-hit-mode", choices=["subset", "all"], default="subset")
return parser.parse_args(argv)
def apply_rule_hit_mode(rule_hit_mode: str) -> None:
os.environ["RULE_HIT_MODE"] = rule_hit_mode
settings.RULE_HIT_MODE = rule_hit_mode
if __name__ == "__main__":
import uvicorn
args = parse_args()
apply_rule_hit_mode(args.rule_hit_mode)
# 启动服务器
uvicorn.run(
app,

View File

@@ -0,0 +1,19 @@
import pytest
from main import parse_args as parse_main_args
from dev import parse_args as parse_dev_args
def test_main_parse_args_should_default_to_subset():
args = parse_main_args([])
assert args.rule_hit_mode == "subset"
def test_main_parse_args_should_accept_all_mode():
args = parse_main_args(["--rule-hit-mode", "all"])
assert args.rule_hit_mode == "all"
def test_dev_parse_args_should_reject_invalid_mode():
with pytest.raises(SystemExit):
parse_dev_args(["--rule-hit-mode", "invalid"])