补充Mock规则命中模式启动参数
This commit is contained in:
@@ -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
29
lsfx-mock-server/dev.py
Normal 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()
|
||||
@@ -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,
|
||||
|
||||
19
lsfx-mock-server/tests/test_startup.py
Normal file
19
lsfx-mock-server/tests/test_startup.py
Normal 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"])
|
||||
Reference in New Issue
Block a user