补充Mock规则命中模式启动参数
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
from pydantic_settings import BaseSettings
|
from pydantic_settings import BaseSettings
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import re
|
import re
|
||||||
|
from typing import Literal
|
||||||
|
|
||||||
|
|
||||||
def _load_ruoyi_mysql_defaults() -> dict:
|
def _load_ruoyi_mysql_defaults() -> dict:
|
||||||
@@ -42,6 +43,7 @@ class Settings(BaseSettings):
|
|||||||
# 模拟配置
|
# 模拟配置
|
||||||
PARSE_DELAY_SECONDS: int = 4 # 文件解析延迟秒数
|
PARSE_DELAY_SECONDS: int = 4 # 文件解析延迟秒数
|
||||||
MAX_FILE_SIZE: int = 10485760 # 10MB
|
MAX_FILE_SIZE: int = 10485760 # 10MB
|
||||||
|
RULE_HIT_MODE: Literal["subset", "all"] = "subset"
|
||||||
|
|
||||||
# 测试数据配置
|
# 测试数据配置
|
||||||
INITIAL_PROJECT_ID: int = 1000
|
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 个核心接口
|
基于 FastAPI 实现的 Mock 服务器,用于模拟流水分析平台的 7 个核心接口
|
||||||
"""
|
"""
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from routers import api
|
from routers import api
|
||||||
from config.settings import settings
|
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__":
|
if __name__ == "__main__":
|
||||||
import uvicorn
|
import uvicorn
|
||||||
|
|
||||||
|
args = parse_args()
|
||||||
|
apply_rule_hit_mode(args.rule_hit_mode)
|
||||||
|
|
||||||
# 启动服务器
|
# 启动服务器
|
||||||
uvicorn.run(
|
uvicorn.run(
|
||||||
app,
|
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