# elevator_api_parity — 新旧 JAR 接口对拍 ## 环境 - Python 3.8+ - 安装:`pip install -r requirements.txt`(在**本目录**下执行) ## 环境说明 本机若安装过 `allure_pytest` 等全局 pytest 插件且与 Python 版本冲突,请执行: `export PYTEST_DISABLE_PLUGIN_AUTOLOAD=1`(`run_elevator_parity.sh` 已自动设置)后再跑 `pytest`。 ## 快速使用 1. 构建新 JAR(在 reactor 根目录、JDK8) `mvn -DskipTests clean package` 得到:`../cw-elevator-application-starter/target/cw-elevator-application-2.0.0.jar` 2. 将历史 JAR 放到 `cw-elevator-application-V1.0.0.20211103/cw-elevator-application-V1.0.0.20211103.jar` 或设 `ELEVATOR_JAR_LEGACY`。 3. 准备**与现网相同**的 `application.yml`(或目录),如 `ELEVATOR_SPRING_CONFIG=file:/path/to/application-elevator.yml`。 4. 从仓库**反编译**根或本目录执行: `../../scripts/run_elevator_parity.sh`(见该脚本内环境变量说明) 或手动启动两实例后: ```bash export ELEVATOR_BASE_OLD=http://127.0.0.1:18080 export ELEVATOR_BASE_NEW=http://127.0.0.1:18081 export ELEVATOR_HEADER_BUSINESSID=... # 与现网/联调一致 # ... cd tools/elevator_api_parity python -m pytest tests/ -v --tb=short ``` ## 配置 - `api_catalog.json`:对拍端点、方法、fixture 文件名、说明。 - `fixtures/*.json`:各接口请求体。 - 归一化忽略键可扩展 `parity/compare.py` 中 `DEFAULT_STRIP_PATHS`(如 `data.rows` 内动态字段,谨慎)。 ## 报告 - `report/parity-YYYYMMDD-HHMMSS.md`:实跑时由 `conftest` 的 session hook 与 `report/generate_report.py` 组合生成。 - JUnit(可选):`--junitxml=report/junit.xml`