让 AI 助手能够直接管理 TestLink 中的测试项目、测试套件、测试用例、测试计划、构建、执行结果和需求。通过 MCP (Model Context Protocol),你可以用自然语言与 AI 交流来查询、创建、更新和维护 TestLink 测试资产。
- 📋 获取 TestLink 测试项目列表
- 🔎 为后续套件、计划、需求操作定位项目 ID
- 📋 获取项目下的一级测试套件
- 🔍 查看测试套件详情
- ➕ 创建测试套件
- 🌲 创建嵌套测试套件
- ✏️ 更新测试套件名称和描述
- 🔍 查看测试用例详情
- 📋 获取测试套件下的测试用例
- ➕ 创建测试用例
- ✏️ 更新测试用例名称、摘要、前置条件、步骤、重要性、执行类型和状态
- 🗑️ 标记测试用例为废弃
- 🆔 支持数字 ID 和外部 ID(如
PREFIX-123)
- 📋 获取项目下的测试计划
- ➕ 创建测试计划
- 📋 获取测试计划中的测试用例
- 🔗 将测试用例加入测试计划
- 🗑️ 删除测试计划
- 📋 获取测试计划下的构建
- ➕ 创建构建
- 🔒 关闭构建
- 📊 获取测试执行结果
- ✅ 记录测试执行结果
- 📋 获取项目下的需求
- 🔍 查看需求详情
无需安装,直接在 MCP 客户端配置中使用:
编辑 ~/.cursor/mcp.json(Windows: %USERPROFILE%\.cursor\mcp.json):
{
"mcpServers": {
"testlink": {
"command": "npx",
"args": ["-y", "@acehubert/testlink-mcp"],
"env": {
"TESTLINK_URL": "https://your-testlink-server.com/testlink",
"TESTLINK_API_KEY": "your_api_key"
}
}
}
}编辑 claude_desktop_config.json:
{
"mcpServers": {
"testlink": {
"command": "npx",
"args": ["-y", "@acehubert/testlink-mcp"],
"env": {
"TESTLINK_URL": "https://your-testlink-server.com/testlink",
"TESTLINK_API_KEY": "your_api_key"
}
}
}
}npm install -g @acehubert/testlink-mcp全局安装后会提供两个命令:
testlink-mcp:启动 MCP Server,用于接入 MCP 客户端。testlink:命令行工具,用于在终端直接操作 TestLink。
然后在 MCP 配置中使用:
{
"mcpServers": {
"testlink": {
"command": "testlink-mcp",
"env": {
"TESTLINK_URL": "https://your-testlink-server.com/testlink",
"TESTLINK_API_KEY": "your_api_key"
}
}
}
}- 克隆项目并安装依赖:
git clone https://github.com/aceHuber/testlink-mcp.git
cd testlink-mcp
yarn install
yarn build- 在 MCP 配置中使用本地路径:
{
"mcpServers": {
"testlink": {
"command": "node",
"args": ["/path/to/testlink-mcp/dist/index.js"],
"env": {
"TESTLINK_URL": "https://your-testlink-server.com/testlink",
"TESTLINK_API_KEY": "your_api_key"
}
}
}
}| 变量名 | 必填 | 说明 |
|---|---|---|
TESTLINK_URL |
✅ | TestLink 服务地址,通常包含 /testlink 路径 |
TESTLINK_API_KEY |
✅ | TestLink 个人 API Key,可在 TestLink 个人设置中获取或重新生成 |
也可以通过启动参数传入:
testlink-mcp \
--url "https://your-testlink-server.com/testlink" \
--apiKey "your_api_key"testlink CLI 适合在终端中做一次性查询、脚本化检查和小批量维护。
安装:
npm install -g @acehubert/testlink-mcp
testlink --version推荐使用本地配置或环境变量配置连接信息,避免 API Key 进入普通业务命令的 shell 历史:
testlink config set url "https://your-testlink-server.com/testlink"
testlink config set apiKey "your_api_key"
testlink config get
testlink config get url
testlink config remove apiKey解析优先级为:命令行参数 > 本地配置 > 环境变量。
MCP Server 和 CLI 共用同一份本地配置,因此 config set 后无需再为 MCP 单独配置同样的值。
也可以使用环境变量配置连接信息:
export TESTLINK_URL="https://your-testlink-server.com/testlink"
export TESTLINK_API_KEY="your_api_key"也可以在命令行中临时传入连接参数:
testlink projects list \
--url "https://your-testlink-server.com/testlink" \
--apiKey "your_api_key"基本格式:
testlink <resource> <action> [arguments] [flags]查看帮助:
testlink --help
testlink --version
testlink cases --help
testlink suites --help
testlink plans --helpCLI 输出为格式化 JSON,方便结合 jq 或脚本继续处理。
testlink projects list查询:
testlink suites list --projectId 1
testlink suites view --suiteId 10创建:
testlink suites create \
--projectId 1 \
--suiteName "登录模块" \
--details "登录相关测试套件"创建子套件:
testlink suites create \
--projectId 1 \
--suiteName "手机号验证码登录" \
--parentId 10更新:
testlink suites update \
--suiteId 10 \
--projectId 1 \
--data '{"name":"登录测试套件","details":"更新后的套件说明"}'data 参数需要传入 JSON 对象字符串。测试用例 ID 支持数字 ID 和外部 ID。
查询:
testlink cases list-in-suite --suiteId 10
testlink cases view --testCaseId PREFIX-123创建:
testlink cases create \
--data '{"testprojectid":"1","testsuiteid":"10","name":"手机号验证码登录成功","authorlogin":"qa","summary":"验证手机号验证码登录流程","steps":[{"step_number":1,"actions":"输入手机号","expected_results":"手机号格式正确"},{"step_number":2,"actions":"输入验证码并提交","expected_results":"登录成功"}],"importance":2,"execution_type":1}'更新:
testlink cases update \
--testCaseId PREFIX-123 \
--data '{"summary":"更新后的用例摘要","importance":3}'标记为废弃:
testlink cases delete --testCaseId PREFIX-123TestLink XML-RPC 客户端不提供直接删除测试用例的方法,
cases delete会将用例状态标记为废弃。
查询:
testlink plans list --projectId 1
testlink plans list-cases --planId 20创建:
testlink plans create \
--data '{"project_id":"PROJECT_PREFIX","name":"回归测试计划","notes":"主干回归测试计划","active":1,"is_public":1}'添加测试用例:
testlink plans add-case \
--data '{"testcaseid":"PREFIX-123","testplanid":"20","testprojectid":"1","version":1,"urgency":2}'删除:
testlink plans delete --planId 20查询:
testlink builds list --planId 20创建:
testlink builds create \
--data '{"plan_id":"20","name":"2026.04.24","notes":"发布验证构建","active":1,"open":1}'关闭:
testlink builds close --buildId 30查询:
testlink executions list --planId 20
testlink executions list --planId 20 --buildId 30记录结果:
testlink executions create \
--data '{"test_case_id":"PREFIX-123","plan_id":"20","build_id":"30","status":"p","notes":"测试环境验证通过"}'常见执行状态:
p:通过f:失败b:阻塞
testlink requirements list --projectId 1
testlink requirements view --projectId 1 --requirementId 100testlink cases list-in-suite --suiteId 10 \
| jq '.[] | {id, external_id, name}'写操作建议遵循以下流程:
- 使用
list或view确认目标 ID。 - 执行
create、update、delete、close或create execution。 - 再次使用
view或list验证结果。
配置完成后,你可以用自然语言与 AI 交流来管理 TestLink:
> "帮我列出 TestLink 中所有测试项目"
> "查看项目 1 下有哪些测试套件"
> "在项目 1 下创建一个登录模块测试套件"
> "查看测试用例 PREFIX-123 的详细信息"
> "列出套件 10 下的所有测试用例"
> "创建一个手机号验证码登录成功的测试用例"
> "把测试用例 PREFIX-123 的重要性改成高"
> "列出项目 1 的测试计划"
> "把用例 PREFIX-123 加入测试计划 20"
> "为测试计划 20 创建一个今天的构建"
> "关闭构建 30"
> "查看测试计划 20 在构建 30 下的执行结果"
> "记录用例 PREFIX-123 在构建 30 中执行通过"
> "列出项目 1 下的需求"
> "查看需求 100 的详细信息"
| 工具名称 | 描述 |
|---|---|
list_projects |
获取所有 TestLink 项目 |
| 工具名称 | 描述 |
|---|---|
list_test_suites |
获取项目下的一级测试套件 |
read_test_suite |
查看测试套件详情 |
list_test_cases_in_suite |
获取测试套件下的测试用例 |
create_test_suite |
创建测试套件,支持父级套件 |
update_test_suite |
更新测试套件名称和描述 |
| 工具名称 | 描述 |
|---|---|
read_test_case |
查看测试用例详情 |
create_test_case |
创建测试用例 |
update_test_case |
更新测试用例 |
delete_test_case |
将测试用例标记为废弃 |
list_test_cases_in_suite |
获取测试套件下的测试用例 |
| 工具名称 | 描述 |
|---|---|
list_test_plans |
获取项目下的测试计划 |
create_test_plan |
创建测试计划 |
delete_test_plan |
删除测试计划 |
get_test_cases_for_test_plan |
获取测试计划中的测试用例 |
add_test_case_to_test_plan |
将测试用例加入测试计划 |
| 工具名称 | 描述 |
|---|---|
list_builds |
获取测试计划下构建 |
create_build |
创建构建 |
close_build |
关闭构建 |
read_test_execution |
获取测试执行结果 |
create_test_execution |
记录测试执行结果 |
| 工具名称 | 描述 |
|---|---|
list_requirements |
获取项目下的需求 |
get_requirement |
查看需求详情 |
read_test_case、update_test_case、delete_test_case、create_test_execution 等操作支持两种用例 ID:
| 格式 | 示例 | 说明 |
|---|---|---|
| 数字 ID | 123 |
TestLink 内部用例 ID |
| 外部 ID | PREFIX-123 |
TestLink 外部用例 ID |
常见值:
| 值 | 描述 |
|---|---|
1 |
低 |
2 |
中 |
3 |
高 |
常见值:
| 值 | 描述 |
|---|---|
1 |
手工 |
2 |
自动 |
常见值:
| 状态 | 描述 |
|---|---|
p |
通过 |
f |
失败 |
b |
阻塞 |
- 权限:确保配置的 TestLink 账号有足够权限进行相应操作。
- API Key 安全:不要将
TESTLINK_API_KEY提交到公开仓库、日志或脚本中。 - URL 路径:
TESTLINK_URL通常需要包含 TestLink 部署路径,如https://example.com/testlink。 - 删除语义:测试用例删除会标记为废弃;删除测试计划是真实删除操作,执行前请确认影响范围。
- 构建关闭:关闭构建会阻止继续记录新执行结果,生产环境操作前请确认。
- 批量操作:批量更新、关闭构建、删除计划或记录执行结果前,应先查询并确认目标 ID。
安装依赖:
yarn install类型检查:
yarn typecheck代码检查:
yarn lint构建:
yarn build本地启动 MCP Server:
TESTLINK_URL="https://your-testlink-server.com/testlink" \
TESTLINK_API_KEY="your_api_key" \
yarn dev