WHartTest 测试管理平台
快速开始
# 设置环境变量
export WHARTTEST_BACKEND_URL="http://your-backend:8000"
export WHARTTEST_API_KEY="your-api-key"
# 执行操作
python whart_tools.py --action <action_name> [--参数名 参数值]
可用操作
项目管理
| Action |
描述 |
参数 |
get_projects |
获取所有项目列表 |
无 |
get_modules |
获取项目下的模块列表 |
--project_id |
add_module |
新增用例模块 |
--project_id, --name, --parent_id (可选) |
用例管理
| Action |
描述 |
参数 |
get_levels |
获取用例等级列表 |
无 |
get_testcases |
获取模块下的用例列表 |
--project_id, --module_id |
get_testcase_detail |
获取用例详情 |
--project_id, --case_id |
add_testcase |
新增测试用例 |
--project_id, --module_id, --name, --level, --precondition, --steps, --notes, --review_status, --test_type |
edit_testcase |
编辑测试用例 |
--project_id, --case_id, --name, --level, --module_id, --precondition, --steps, --notes, --review_status, --test_type, --is_optimization |
截图管理
| Action |
描述 |
参数 |
upload_screenshot |
上传单张截图 |
--project_id, --case_id, --file_path, --title, --description, --step_number, --page_url |
upload_screenshots |
批量上传截图 |
--project_id, --case_id, --file_paths(逗号分隔), --title, --description, --step_number, --page_url |
截图路径约定:自动化技能(如 playwright-skill、browser-use)生成的截图应优先保存到 SCREENSHOT_DIR 环境变量指定的目录。上传时只需传入文件名(无需路径),系统会优先从 SCREENSHOT_DIR 查找;若未命中,会再回退到常见临时截图目录做兼容搜索。
单张上传:--file_path "case_11_step1.png"
批量上传:--file_paths "step1.png,step2.png,step3.png"(最多10张,逗号分隔)
文件管理
| Action |
描述 |
参数 |
list_files |
获取项目文件列表 |
--project_id, --page, --page_size, --search, --status, --extension, --mime_type, --ordering |
get_file_detail |
获取文件详情 |
--project_id, --file_id |
upload_file |
上传单个项目文件 |
--project_id, --file_path |
upload_files |
批量上传项目文件 |
--project_id, --file_paths(逗号分隔) |
validate_files |
校验 file_ids 是否存在、属于项目且状态可用 |
--project_id, --file_ids(JSON数组或逗号分隔) |
get_file_references |
获取文件引用详情 |
--project_id, --file_id |
delete_file |
删除项目文件;被引用文件由后端软删除 |
--project_id, --file_id |
get_file_settings |
获取项目文件管理设置 |
--project_id |
update_file_settings |
更新自动清理设置 |
--project_id, --auto_delete_on_unbind, --auto_delete_zero_refs |
cleanup_unreferenced_files |
立即清理无引用项目文件 |
--project_id |
download_file |
下载文件到本地 |
--project_id, --file_id, --output_path 或 --output_dir |
preview_file |
预览文件;文本直接返回,二进制可保存 |
--project_id, --file_id, --output_path(可选) |
文件 ID 约定:上传文件后返回的 id / file_id 可传给接口自动化、UI 自动化或智能体对话中的 file_ids 字段。使用前可通过 validate_files 校验。
设置布尔值:--auto_delete_on_unbind 与 --auto_delete_zero_refs 使用 true / false。
审核状态
--review_status 可选值:
pending_review - 待审核(默认)
approved - 通过
needs_optimization - 优化
optimization_pending_review - 优化待审核
unavailable - 不可用
测试类型
--test_type 可选值:
smoke - 冒烟测试
functional - 功能测试(默认)
boundary - 边界测试
exception - 异常测试
permission - 权限测试
security - 安全测试
compatibility - 兼容性测试
--is_optimization 标志(布尔型,无需传值):在 edit_testcase 时带上此标志,会自动将状态设为 optimization_pending_review(优化待审核),用于AI优化后的用例提交。一次调用即可完成编辑+状态更新。
- ✅ 正确用法:
python whart_tools.py --action edit_testcase --project_id 1 --case_id 51 ... --is_optimization
- ❌ 错误用法:
--is_optimization true(不要传值)
使用示例
# 获取项目列表
python whart_tools.py --action get_projects
# 获取项目1的模块
python whart_tools.py --action get_modules --project_id 1
# 新增用例模块
python whart_tools.py --action add_module --project_id 1 --name "新功能模块"
# 新增子用例模块
python whart_tools.py --action add_module --project_id 1 --name "子功能模块" --parent_id 10
# 获取用例列表
python whart_tools.py --action get_testcases --project_id 1 --module_id 5
# 新增用例
python whart_tools.py --action add_testcase \
--project_id 1 \
--module_id 5 \
--name "登录功能测试" \
--level P0 \
--precondition "用户已注册" \
--steps '[{"step_number":1,"description":"输入用户名","expected_result":"用户名显示"}]' \
--notes "冒烟测试"
# 上传单张截图
python whart_tools.py --action upload_screenshot \
--project_id 1 \
--case_id 10 \
--file_path "step1.png" \
--title "登录页面截图" \
--step_number 1
# 批量上传截图
python whart_tools.py --action upload_screenshots \
--project_id 1 \
--case_id 10 \
--file_paths "step1.png,step2.png,step3.png" \
--title "登录测试截图"
# 上传项目文件
python whart_tools.py --action upload_file \
--project_id 1 \
--file_path "./需求说明.docx"
# 查询项目文件
python whart_tools.py --action list_files \
--project_id 1 \
--search "需求" \
--page_size 20
# 校验附件 file_ids
python whart_tools.py --action validate_files \
--project_id 1 \
--file_ids "12,13"
# 下载项目文件
python whart_tools.py --action download_file \
--project_id 1 \
--file_id 12 \
--output_dir "./downloads"
# 更新文件清理设置
python whart_tools.py --action update_file_settings \
--project_id 1 \
--auto_delete_on_unbind true \
--auto_delete_zero_refs false
输出格式
所有操作返回 JSON 格式结果,便于解析处理。
1---2name: whart-test3description: WHartTest测试管理平台工具集。用于管理项目、模块、测试用例、测试截图和项目文件附件的增删改查。当用户需要操作测试用例、查询项目信息、上传截图、上传/下载/预览/删除项目文件、校验 file_ids 或管理文件清理设置时使用。4---56# WHartTest 测试管理平台78## 快速开始910```bash11# 设置环境变量12export WHARTTEST_BACKEND_URL="http://your-backend:8000"13export WHARTTEST_API_KEY="your-api-key"1415# 执行操作16python whart_tools.py --action <action_name> [--参数名 参数值]17```1819## 可用操作2021### 项目管理2223| Action | 描述 | 参数 |24|--------|------|------|25| `get_projects` | 获取所有项目列表 | 无 |26| `get_modules` | 获取项目下的模块列表 | `--project_id` |27| `add_module` | 新增用例模块 | `--project_id`, `--name`, `--parent_id` (可选) |2829### 用例管理3031| Action | 描述 | 参数 |32|--------|------|------|33| `get_levels` | 获取用例等级列表 | 无 |34| `get_testcases` | 获取模块下的用例列表 | `--project_id`, `--module_id` |35| `get_testcase_detail` | 获取用例详情 | `--project_id`, `--case_id` |36| `add_testcase` | 新增测试用例 | `--project_id`, `--module_id`, `--name`, `--level`, `--precondition`, `--steps`, `--notes`, `--review_status`, `--test_type` |37| `edit_testcase` | 编辑测试用例 | `--project_id`, `--case_id`, `--name`, `--level`, `--module_id`, `--precondition`, `--steps`, `--notes`, `--review_status`, `--test_type`, `--is_optimization` |3839### 截图管理4041| Action | 描述 | 参数 |42|--------|------|------|43| `upload_screenshot` | 上传单张截图 | `--project_id`, `--case_id`, `--file_path`, `--title`, `--description`, `--step_number`, `--page_url` |44| `upload_screenshots` | 批量上传截图 | `--project_id`, `--case_id`, `--file_paths`(逗号分隔), `--title`, `--description`, `--step_number`, `--page_url` |4546**截图路径约定**:自动化技能(如 `playwright-skill`、`browser-use`)生成的截图应优先保存到 `SCREENSHOT_DIR` 环境变量指定的目录。上传时只需传入文件名(无需路径),系统会优先从 `SCREENSHOT_DIR` 查找;若未命中,会再回退到常见临时截图目录做兼容搜索。4748**单张上传**:`--file_path "case_11_step1.png"`49**批量上传**:`--file_paths "step1.png,step2.png,step3.png"`(最多10张,逗号分隔)5051### 文件管理5253| Action | 描述 | 参数 |54|--------|------|------|55| `list_files` | 获取项目文件列表 | `--project_id`, `--page`, `--page_size`, `--search`, `--status`, `--extension`, `--mime_type`, `--ordering` |56| `get_file_detail` | 获取文件详情 | `--project_id`, `--file_id` |57| `upload_file` | 上传单个项目文件 | `--project_id`, `--file_path` |58| `upload_files` | 批量上传项目文件 | `--project_id`, `--file_paths`(逗号分隔) |59| `validate_files` | 校验 file_ids 是否存在、属于项目且状态可用 | `--project_id`, `--file_ids`(JSON数组或逗号分隔) |60| `get_file_references` | 获取文件引用详情 | `--project_id`, `--file_id` |61| `delete_file` | 删除项目文件;被引用文件由后端软删除 | `--project_id`, `--file_id` |62| `get_file_settings` | 获取项目文件管理设置 | `--project_id` |63| `update_file_settings` | 更新自动清理设置 | `--project_id`, `--auto_delete_on_unbind`, `--auto_delete_zero_refs` |64| `cleanup_unreferenced_files` | 立即清理无引用项目文件 | `--project_id` |65| `download_file` | 下载文件到本地 | `--project_id`, `--file_id`, `--output_path` 或 `--output_dir` |66| `preview_file` | 预览文件;文本直接返回,二进制可保存 | `--project_id`, `--file_id`, `--output_path`(可选) |6768**文件 ID 约定**:上传文件后返回的 `id` / `file_id` 可传给接口自动化、UI 自动化或智能体对话中的 `file_ids` 字段。使用前可通过 `validate_files` 校验。6970**设置布尔值**:`--auto_delete_on_unbind` 与 `--auto_delete_zero_refs` 使用 `true` / `false`。7172### 审核状态7374`--review_status` 可选值:75- `pending_review` - 待审核(默认)76- `approved` - 通过77- `needs_optimization` - 优化78- `optimization_pending_review` - 优化待审核79- `unavailable` - 不可用8081### 测试类型8283`--test_type` 可选值:84- `smoke` - 冒烟测试85- `functional` - 功能测试(默认)86- `boundary` - 边界测试87- `exception` - 异常测试88- `permission` - 权限测试89- `security` - 安全测试90- `compatibility` - 兼容性测试9192`--is_optimization` 标志(布尔型,无需传值):在 edit_testcase 时带上此标志,会自动将状态设为 `optimization_pending_review`(优化待审核),用于AI优化后的用例提交。**一次调用即可完成编辑+状态更新。**93- ✅ 正确用法:`python whart_tools.py --action edit_testcase --project_id 1 --case_id 51 ... --is_optimization`94- ❌ 错误用法:`--is_optimization true`(不要传值)9596## 使用示例9798```bash99# 获取项目列表100python whart_tools.py --action get_projects101102# 获取项目1的模块103python whart_tools.py --action get_modules --project_id 1104105# 新增用例模块106python whart_tools.py --action add_module --project_id 1 --name "新功能模块"107108# 新增子用例模块109python whart_tools.py --action add_module --project_id 1 --name "子功能模块" --parent_id 10110111# 获取用例列表112python whart_tools.py --action get_testcases --project_id 1 --module_id 5113114# 新增用例115python whart_tools.py --action add_testcase \116 --project_id 1 \117 --module_id 5 \118 --name "登录功能测试" \119 --level P0 \120 --precondition "用户已注册" \121 --steps '[{"step_number":1,"description":"输入用户名","expected_result":"用户名显示"}]' \122 --notes "冒烟测试"123124# 上传单张截图125python whart_tools.py --action upload_screenshot \126 --project_id 1 \127 --case_id 10 \128 --file_path "step1.png" \129 --title "登录页面截图" \130 --step_number 1131132# 批量上传截图133python whart_tools.py --action upload_screenshots \134 --project_id 1 \135 --case_id 10 \136 --file_paths "step1.png,step2.png,step3.png" \137 --title "登录测试截图"138139# 上传项目文件140python whart_tools.py --action upload_file \141 --project_id 1 \142 --file_path "./需求说明.docx"143144# 查询项目文件145python whart_tools.py --action list_files \146 --project_id 1 \147 --search "需求" \148 --page_size 20149150# 校验附件 file_ids151python whart_tools.py --action validate_files \152 --project_id 1 \153 --file_ids "12,13"154155# 下载项目文件156python whart_tools.py --action download_file \157 --project_id 1 \158 --file_id 12 \159 --output_dir "./downloads"160161# 更新文件清理设置162python whart_tools.py --action update_file_settings \163 --project_id 1 \164 --auto_delete_on_unbind true \165 --auto_delete_zero_refs false166```167168## 输出格式169170所有操作返回 JSON 格式结果,便于解析处理。