WHartTest 接口自动化管理
生命周期概览
基础资源准备 → 接口调试验证 → 用例编排 → 执行与报告 → 套件批量执行 → 同步与回滚
1. 模块/数据库/环境/变量/函数
2. 接口定义与 quick_debug / run
3. 测试用例、步骤、标签、分组
4. 单用例执行 / 批量执行 / 历史报告
5. 任务套件执行 / 查看 case_results / 取消执行
6. 接口-步骤同步 / 立即同步 / 批量同步 / 历史回滚
关键原则
- 先查后建:创建模块、环境、接口、用例前,优先先查现有资源,避免重复。
- 先调试后编排:接口定义好后先用
quick_debug_interface 或 run_interface 验证,再写入测试用例。
- 复杂 JSON 用
@文件:--payload 和 --params 都支持 @绝对或相对路径.json,适合长 JSON。
- 统一返回 JSON:所有动作都返回 JSON,成功时通常包含
status/data,失败时返回 status=error。
快速开始
# 基本调用
python api_automation_tools.py --action <action_name> --project_id <project_id>
# 带请求体
python api_automation_tools.py --action <action_name> --project_id 1 --payload '{"name":"示例"}'
# 从文件读取 JSON
python api_automation_tools.py --action create_interface --project_id 1 --payload @payload.json
# 带查询参数
python api_automation_tools.py --action list_interfaces --project_id 1 --params '{"module_id":10,"page":1,"page_size":50}'
常用枚举值
数据库类型
mysql
postgresql
sqlite
oracle
sqlserver
环境变量类型
string
integer
float
boolean
json
list
dict
接口类型与方法
- 接口类型:
http、sql
- HTTP 方法:
GET、POST、PUT、DELETE、PATCH
- SQL 方法:
fetchone、fetchmany、fetchall、insert、update、delete
用例/任务优先级
同步配置
sync_mode:manual、auto
sync_fields 可选:method、url、headers、params、body、setup_hooks、teardown_hooks、variables、validators、extract
执行状态
- 用例报告:
success、failure、error
- 任务执行:
pending、running、completed、failed、canceled
- 套件用例结果:
pending、running、success、failure、error、skipped
可用动作
模块管理
数据库配置
环境与变量
自定义函数
接口定义与调试
用例标签、分组、用例与报告
同步配置与回滚
任务套件与批量执行
常见 Payload 结构
创建数据库配置
{
"name": "mysql-dev",
"type": "mysql",
"host": "127.0.0.1",
"port": 3306,
"username": "root",
"password": "123456",
"database": "demo",
"charset": "utf8mb4",
"verify_ssl": false,
"is_active": true,
"description": "开发环境 MySQL"
}
创建环境
{
"name": "dev",
"base_url": "https://dev.example.com",
"verify_ssl": false,
"description": "开发环境",
"is_active": true
}
批量创建环境变量
{
"environment_id": 10,
"variables": [
{"name": "token", "value": "demo-token", "type": "string"},
{"name": "tenant_id", "value": "1001", "type": "integer"}
]
}
创建 HTTP 接口
{
"name": "登录接口",
"type": "http",
"module": 5,
"method": "POST",
"url": "/api/login",
"headers": [{"key": "Content-Type", "value": "application/json"}],
"params": [],
"body": {"type": "json", "content": {"username": "admin", "password": "123456"}},
"variables": {},
"validators": [{"eq": ["status_code", 200]}],
"extract": {"token": "body.data.token"},
"setup_hooks": [],
"teardown_hooks": []
}
快速调试 SQL 接口
{
"name": "查询用户",
"type": "sql",
"method": "fetchone",
"sql": "select id, username from user where id = 1",
"sql_params": {},
"environment_id": 10
}
创建测试用例
{
"name": "登录成功用例",
"description": "验证登录接口返回 token",
"priority": "P0",
"group": 3,
"tags": [1, 2],
"config": {},
"steps_info": [
{
"name": "调用登录接口",
"order": 1,
"interface_id": 20,
"interface_data": {
"extract": {"token": "body.data.token"},
"validators": [{"eq": ["status_code", 200]}],
"variables": {},
"setup_hooks": [],
"teardown_hooks": []
}
}
]
}
创建任务套件
{
"name": "登录回归套件",
"description": "登录相关接口回归",
"priority": "P1",
"fail_fast": false,
"test_cases": [101, 102, 103]
}
创建同步配置
{
"name": "登录接口同步配置",
"description": "保持步骤与接口定义一致",
"interface": 20,
"testcase": 101,
"step": 301,
"sync_fields": ["url", "headers", "body", "validators", "extract"],
"sync_enabled": true,
"sync_mode": "manual",
"sync_trigger": {}
}
使用示例
1. 获取模块树
python api_automation_tools.py --action get_module_tree --project_id 1
2. 创建数据库配置并测试连接
python api_automation_tools.py --action create_database_config --project_id 1 --payload @db.json
python api_automation_tools.py --action test_saved_database_connection --project_id 1 --database_config_id 8
3. 创建环境并批量写入变量
python api_automation_tools.py --action create_environment --project_id 1 --payload '{"name":"dev","base_url":"https://dev.example.com"}'
python api_automation_tools.py --action batch_create_environment_variables --project_id 1 --payload @env-vars.json
4. 创建接口并快速调试
python api_automation_tools.py --action create_interface --project_id 1 --payload @login-interface.json
python api_automation_tools.py --action quick_debug_interface --project_id 1 --payload @quick-debug.json
python api_automation_tools.py --action run_interface --project_id 1 --interface_id 20 --payload '{"environment_id":10}'
5. 创建用例并执行
python api_automation_tools.py --action create_testcase --project_id 1 --payload @testcase.json
python api_automation_tools.py --action run_testcase --project_id 1 --testcase_id 101 --payload '{"environment_id":10}'
python api_automation_tools.py --action get_history_reports --project_id 1 --testcase_id 101 --params '{"page":1,"page_size":20}'
6. 批量执行多个用例
python api_automation_tools.py --action batch_run_testcases --project_id 1 --payload '{"testcase_ids":[101,102,103],"environment_id":10}'
7. 创建并执行任务套件
python api_automation_tools.py --action create_task_suite --project_id 1 --payload @suite.json
python api_automation_tools.py --action add_suite_testcases --project_id 1 --task_suite_id 6 --payload '{"testcase_ids":[101,102]}'
python api_automation_tools.py --action execute_task_suite --project_id 1 --payload '{"task_suite_id":6,"environment_id":10}'
python api_automation_tools.py --action get_task_case_results --project_id 1 --task_execution_id 88
8. 创建同步配置并立即同步
python api_automation_tools.py --action create_sync_config --project_id 1 --payload @sync-config.json
python api_automation_tools.py --action sync_now --project_id 1 --sync_config_id 15
python api_automation_tools.py --action batch_sync --project_id 1 --payload '{"config_ids":[15,16]}'
9. 回滚同步历史
python api_automation_tools.py --action list_sync_histories --project_id 1 --params '{"config_id":15}'
python api_automation_tools.py --action rollback_sync_history --project_id 1 --sync_history_id 99
故障排查
建议工作流
get_module_tree / list_environments / list_interfaces
- 如需新增资源,先
create_*
- 接口优先
quick_debug_interface
- 验证通过后再
create_testcase
- 先
run_testcase,再考虑 execute_task_suite
- 若接口定义变更,再通过
sync_now / batch_sync 更新用例步骤
- 若同步异常,查看
list_sync_histories 并按需 rollback_sync_history