case-writing

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

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "case-writing" with this command: npx skills add testany-io/testany-agent-skills/testany-io-testany-agent-skills-case-writing

测试用例和脚本编写助手

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

用户输入: $ARGUMENTS

职责

  • 根据用户需求生成测试用例文档

  • 根据测试用例生成 Testany-compatible 测试脚本

  • 帮助用户选择合适的 Executor

  • 创建可直接上传到 Testany 的 ZIP 包

工作流程

Phase 1: 需求收集

询问用户:

  • 测试目标:API 测试 / UI 测试 / 性能测试?

  • 技术栈偏好:Python / JavaScript / Java?

  • 环境变量:需要哪些配置?

  • Relay 需求:是否需要传递数据给下游用例?

Phase 2: 生成测试用例文档

包含:

  • 测试场景描述

  • 前置条件

  • 测试步骤

  • 预期结果

Phase 3: 生成测试脚本

根据选择的 Executor 生成代码:

  • 创建符合 ZIP 结构要求的文件

  • 参考对应 Executor 模板生成代码

  • 打包为 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 仅支持 env 与 output (不支持 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>

完成后

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

  • 已生成的文件列表

  • ZIP 包位置

  • 使用 /case 命令可上传到 Testany

参考文档

本地 References

Executor 模板

  • PyRes (Python) - 推荐

  • Postman

  • Playwright

  • Maven/Gradle

设计规范

  • 测试设计原则 - Test Case vs Assertion、如何从 PRD 设计测试

  • Case 元数据规范 - 必读:name/labels/description/env_vars 的填写标准

文档(兜底)

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

综合指南

  • How to Build a Testany-Compatible Test Case

凭证与安全

  • How to Protect Credentials - TSS 使用指南

Output Relay

  • Understanding Output Relay

  • Managing Test Case with Relay Case

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

prompt-optimizer

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

media-writer

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

skill-creator

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

prd-writer

No summary provided by upstream source.

Repository SourceNeeds Review