feat(executor): 重构用例加载与执行逻辑,支持参数化变量优先级

- 引入 CaseEntity 包装器,实现数据模型与执行上下文解耦。
 - 移除加载阶段的 deepcopy,优化大规模参数化用例的内存占用。
 - 实现 perform 阶段的局部变量注入,确保参数化数据优先级高于全局缓存。
This commit is contained in:
2026-03-11 17:11:19 +08:00
parent 293b5160fe
commit 2116016a0d
7 changed files with 201 additions and 69 deletions

View File

@@ -12,6 +12,9 @@ request:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0
Referer: http://119.91.19.171:40065/users/login
Accept-Encoding: gzip, deflate
json_body:
username: "${username}"
password: "${password}"
extract: # 提取变量
msg:
- "json"
@@ -19,20 +22,21 @@ extract: # 提取变量
- 0
validate:
- check: status_code # 检查的对象(或是变量名)
assert: equals # 断言方法
expect: 200 # 期望值
msg: "校验接口状态码" # 描述(可选)
- check: status_code
assert: ${status_assert} # <--- 动态断言方法
expect: ${status_expect} # <--- 动态期望值
msg: "校验接口状态码"
- check: $.msg
assert: contains
expect: "Success"
- check: message
assert: ${msg_assert} # <--- 动态断言方法
expect: ${msg_expect} # <--- 动态期望值
msg: "检查返回消息"
parametrize: # 数据驱动测试
- [ "title","username","password","msg" ] # 变量名
- [ "测试1","user1","pass1","200" ] # 变量值
- [ "测试2","user2","pass2","300" ] # 变量值
- [ "测试3","user3","pass3","200" ] # 变量值
- [ "测试4","user4","pass4","200" ] # 变量值
- [ "测试5","user5","pass5","200" ] # 变量值
# 定义列名,包括了断言方法和期望值
- [ "title", "username", "password", "status_assert", "status_expect", "msg_assert", "msg_expect" ]
# 定义每一行的数据,现在可以为每次运行指定不同的断言逻辑
- [ "场景1: 成功-状态码相等-消息包含Success", "user1", "pass1", "equals", 200, "contains", "Success" ]
- [ "场景2: 失败-状态码不相等-消息不包含Error", "user2", "pass2", "not_equals", 200, "not_contains", "Error" ]
- [ "场景3: 成功-状态码大于199-消息相等", "user3", "pass3", "greater_than", 199, "equals", "Success" ]
- [ "场景4: 失败-状态码小于500-消息为空", "user4", "pass4", "less_than", 500, "is_empty", "" ]