case-writing

SKILL.md

测试用例和脚本编写助手

根据用户需求生成测试用例文档和 Testany-compatible 测试脚本。

用户输入: $ARGUMENTS

职责

  • 根据用户需求生成测试用例文档
  • 根据测试用例生成 Testany-compatible 测试脚本
  • 帮助用户选择合适的 Executor
  • 创建可直接上传到 Testany 的 ZIP 包

工作流程

Phase 1: 需求收集

询问用户:

  1. 测试目标:API 测试 / UI 测试 / 性能测试?
  2. 技术栈偏好:Python / JavaScript / Java?
  3. 环境变量:需要哪些配置?
  4. Relay 需求:是否需要传递数据给下游用例?

Phase 2: 生成测试用例文档

包含:

  • 测试场景描述
  • 前置条件
  • 测试步骤
  • 预期结果

Phase 3: 生成测试脚本

根据选择的 Executor 生成代码:

  1. 创建符合 ZIP 结构要求的文件
  2. 参考对应 Executor 模板生成代码
  3. 打包为 ZIP

Phase 4: 交付

询问用户是否要上传到 Testany:

  • → 告知使用 /case 命令上传
  • → 仅保留本地文件

Executor 选择决策树

用户需求
    ├─ API 测试
    │   ├─ 熟悉 Python → PyRes ✓
    │   └─ 不想写代码 → Postman
    ├─ UI/E2E 测试 → Playwright
    └─ Java 项目 → Maven 或 Gradle

根据选择的 Executor,参考对应模板:

Executor 模板文件 适用场景
PyRes pyres.md Python API 测试(推荐)
Postman postman.md 无代码 API 测试
Playwright playwright.md UI/E2E 测试
Maven/Gradle maven.md Java 项目测试

注意:executor 是后端严格字符串。本 skill 涉及的取值为:pyres, postman, playwright, maven, gradle(平台还支持 python, jmeter)。

Playwright 可能还需要配置 Config Path(对应字段 case_meta.trigger_method.playwright_config_path);具体填写规则以文档为准。


环境变量类型(case_meta.environment_variables.type)

类型 用途 示例
env 输入/普通配置(包括 relay 输入) API_BASE_URL, AUTH_TOKEN
output Relay 输出 ACCESS_TOKEN, USER_ID

约束(与平台校验一致):

  • type 仅支持 envoutput(不支持 secret)。
  • name 必须以大写字母开头,只能包含大写字母、数字、下划线;同一 case 内必须唯一。
  • name/value 不能为空或仅空白字符;如需表达“空值”,请显式填 -
  • 敏感凭证请使用 Secure key reference 绑定,并在代码中通过 TESTANY_SECRETS_SERVICE 获取。

Output Relay 完整指南

Output Relay 用于在 Pipeline 中将一个 case 的输出传递给下游 case。必须同时完成配置和代码两部分,否则 relay 不会生效。

端到端流程

┌─────────────────────────────────────────────────────────────────┐
│ 1. Output Case 配置                                              │
│    environment_variables:                                        │
│      - name: ACCESS_TOKEN    ←── 变量名                          │
│        type: output          ←── 必须是 output                   │
│        value: "-"                                                │
├─────────────────────────────────────────────────────────────────┤
│ 2. Output Case 代码                                              │
│    relay_service = os.environ.get("TESTANY_OUTPUT_RELAY_SERVICE") │
│    requests.post(relay_service, json={                           │
│        "ACCESS_TOKEN": token  ←── key 必须与配置的变量名一致      │
│    })                                                            │
├─────────────────────────────────────────────────────────────────┤
│ 3. Pipeline YAML                                                 │
│    - run: E5F6A7B8                                              │
│      relay:                                                      │
│        - key: AUTH_TOKEN      ←── Input Case 中的变量名          │
│          refKey: A1B2C3D4/ACCESS_TOKEN  ←── Output Case 的输出   │
├─────────────────────────────────────────────────────────────────┤
│ 4. Input Case 配置                                               │
│    environment_variables:                                        │
│      - name: AUTH_TOKEN      ←── 与 relay.key 一致               │
│        type: env             ←── 必须是 env                      │
│        value: "-"                                                │
├─────────────────────────────────────────────────────────────────┤
│ 5. Input Case 代码                                               │
│    token = os.getenv("AUTH_TOKEN")  ←── 直接读取环境变量          │
└─────────────────────────────────────────────────────────────────┘

关键约束

约束 说明
变量名必须一致 代码中 POST 的 key 必须与 case 配置的 environment_variables.name 完全一致
type 必须正确 Output Case 用 type: output,Input Case 用 type: env
只有 passed 才 relay 如果 Output Case 失败,relay 数据不可用
必须预先声明 Output 变量必须在 case 配置中声明,否则 relay 不生效

常见错误

# ❌ 错误:代码中的 key 与配置不一致
# 配置:name: ACCESS_TOKEN
# 代码:
relay_output({"TOKEN": token})  # 应该是 ACCESS_TOKEN

# ✅ 正确:
relay_output({"ACCESS_TOKEN": token})
# ❌ 错误:只写了代码,没有在 case 配置中声明 output 变量
relay_service = os.environ.get("TESTANY_OUTPUT_RELAY_SERVICE")
requests.post(relay_service, json={"ACCESS_TOKEN": token})
# 但 case 的 environment_variables 里没有 type=output 的 ACCESS_TOKEN

# ✅ 正确:必须同时配置
# case 配置:
#   environment_variables:
#     - name: ACCESS_TOKEN
#       type: output
#       value: "-"
# 代码:
relay_service = os.environ.get("TESTANY_OUTPUT_RELAY_SERVICE")
requests.post(relay_service, json={"ACCESS_TOKEN": token})

检查清单

编写带 Relay 的 case 时,确认以下内容:

  • Output Case 的 environment_variables 中声明了 type: output 的变量
  • 代码中 POST 的 key 与配置的变量名完全一致
  • Input Case 的 environment_variables 中声明了 type: env 的变量
  • Pipeline YAML 中的 run/whenPassed/whenFailed 使用 Test Case Key(8 位大写十六进制,如 AC2F5A50
  • Pipeline YAML 中的 relay.refKey 格式正确:<SOURCE-CASE-KEY>/<VARIABLE-NAME>

完成后

脚本编写完成后,告知用户:

  1. 已生成的文件列表
  2. ZIP 包位置
  3. 使用 /case 命令可上传到 Testany

参考文档

本地 References

Executor 模板

设计规范

文档(兜底)

如果本地 references 不足以解决问题,请查阅 Testany 文档中心;当本 skill 的示例与文档不一致时,以文档为准:

综合指南

凭证与安全

Output Relay

Weekly Installs
8
GitHub Stars
10
First Seen
Feb 3, 2026
Installed on
codex7
cursor7
opencode7
gemini-cli6
github-copilot6
kimi-cli6