refactor(api): yun8_sync 并入 tests 分层框架(接口层 apis/yun8 + 用例层 api + Allure)

- tests/core: 新增 BaseHttpClient 统一 HTTP 封装(直连绕行/超时/日志/自定义编码);
  db_helper 追加 Db 长连接类(事务/mogrify/自动重连),既有函数不动
- tests/apis/yun8: 21 个 step 方法按域拆分为 5 个 Mixin(driver/accounting/
  audit_payment/receipt/third_party),Yun8Pipeline 24 步编排原样迁移,
  SQL 全部参数化并集中至 sql_templates
- tests/api: 5 阶段有序 P0 E2E 用例(业务失败由 print 改为真实报错)+
  README 迁移(删除明文密码段,修正步骤编号漂移)
- yun8_sync 目录退役:配置并入 test_config.yaml 的 yun8_api 段;
  造数 CLI 保留(python -m tests.apis.yun8.cli,兼容旧 config.yaml 结构)
- pytest.ini 注册 api/yun8_sync marker;requirements.txt 补 requests>=2.28
- 静态验证: compileall / 全仓 collect 24 条 / marker 过滤 / CLI --help /
  客户端与 pipeline 离线实例化 / SQL 占位符核对 / cross_end 兼容
This commit is contained in:
xst
2026-09-08 11:38:17 +08:00
parent e62e3224bf
commit 52b73f456c
26 changed files with 2147 additions and 1786 deletions
+44
View File
@@ -0,0 +1,44 @@
"""tests/api conftest — yun8 运输流程 API 造数 fixtures。
Usage:
def test_xxx(yun8_config, yun8_pipeline, yun8_context):
yun8_pipeline.run_driver_flow()
"""
import pytest
@pytest.fixture(scope="session")
def yun8_config(config):
"""yun8 运输流程 API 配置段(test_config.yaml 的 yun8_api)。"""
return config["yun8_api"]
@pytest.fixture(scope="class")
def yun8_db(yun8_config):
"""class 级数据库长连接(造数 SQL 复用)。"""
from tests.core.db_helper import Db
db = Db()
yield db
db.close()
@pytest.fixture(scope="class")
def yun8_pipeline(yun8_config, yun8_db):
"""class 级 Yun8Pipeline — 5 个阶段用例共享同一份 Postman 变量上下文。
注意: 根 conftest 的 logger fixture 是 function 级,
这里直接用 get_logger(pipeline 内部亦如此)。
"""
from tests.apis.yun8.pipeline import Yun8Pipeline
pipe = Yun8Pipeline(yun8_config, yun8_db)
pipe.set_auth(yun8_config["tokens"]["driver_token"],
yun8_config["tokens"]["admin_token"])
yield pipe
pipe.close()
@pytest.fixture(scope="class")
def yun8_context():
"""跨阶段共享上下文:记录中断原因,供后续阶段 skip。"""
return {"aborted": None}