通过Pipeline Assembler组装测试流水线(测试管道)
Pipeline Assembler 是 Testany 的可视化流水线编排器。你可以在画布上添加 case、连接执行依赖、配置 whenPassed / whenFailed、标记 expect: fail,也可以切换到 YAML View 直接编辑底层 Pipeline YAML。
对于所有新建 Pipeline,推荐使用 kind: rule/v1.3。rule/v1.3 支持 case 级并行调度;rule/v1.2 仅用于兼容历史 Pipeline,不支持 case 级并行执行。
开始之前
请先确认以下准备工作已经完成:
- 要编入 Pipeline 的 case 已经注册到 Testany 的 Test Case Library。
- 你已经知道这些 case 的执行关系:哪些可以先跑,哪些必须等待上游 case 通过或失败后再跑。
- 如果要配置 relay,上游 case 已声明 Relay-Out 输出变量,下游 case 已声明对应的 Relay-In 输入环境变量。
打开 Pipeline Assembler
新建 Pipeline
- 在顶部选择目标 Workspace。
- 进入左侧导航的 Pipelines 页面。
- 点击右上角的 Assemble pipeline。
- 填写 Name 和可选 Description,然后点击 Submit。
- 系统会创建 Pipeline 并进入 Pipeline 详情页。
- 在 Flow Diagram 区域点击 Open Pipeline Assembler 图标,进入可编辑的 Pipeline Assembler。
下图展示的是 Pipeline 详情页中的 Flow Diagram 区域。红框标出 Open Pipeline Assembler 图标。图里的 case key 只是示例;实际编排时请使用你自己 Workspace 中的 case。

编辑已有 Pipeline
- 在 Pipelines 列表中打开目标 Pipeline。
- 在详情页的 Flow Diagram 区域查看当前编排图。
- 点击 Flow Diagram 右上角的 Open Pipeline Assembler 图标。
Pipeline 详情页默认展示只读 Flow Diagram。只有进入 Pipeline Assembler 后,才能修改 case、依赖、relay 或 YAML。
认识编辑界面
Pipeline Assembler 由下图编号标出的区域和控件组成:
- Test Case Library:搜索 case,并将 case 添加到当前 Pipeline。
- Canvas View 区域:通过节点和连线可视化编辑执行依赖。
- Properties Panel:查看或编辑当前选中的节点、边、Expect Fail、Relay-In 和 Relay-Out。
- Canvas View 按钮:回到可视化画布。
- YAML View 按钮:直接编辑 YAML。
- Reset Layout 按钮:重新整理画布布局。
- Legend 按钮:查看节点和边的含义。
- Save 按钮:校验并保存当前 Pipeline 定义。

在 Canvas View 编排 Pipeline
添加 case
在左侧 Test Case Library 中搜索 case name 或 case key,然后点击 Add to Pipeline。被添加的 case 会成为画布上的一个节点。
下图中,1 标出搜索框,2 标出 Add to Pipeline 按钮:

如果某个 case 已经在当前 Pipeline 中,添加操作会变成禁用状态,不能重复添加。同一个 Pipeline 中每个 run case key 必须唯一。
添加成功或 case 已存在时,添加按钮会变成禁用状态,避免重复编入同一个 Pipeline。红框标出这个禁用状态:

创建执行依赖
在画布中,从上游 case 节点右侧连接点拖出连接线,连到下游 case 节点左侧连接点。新建连线默认表示 whenPassed,也就是上游 case 向 Pipeline 报告 Passed 后,下游 case 才会被调度。
选择一条边后,可以在右侧 Properties Panel 中查看:
- Edge Type
- Source
- Target
下面的右侧面板展示了一条已选中的 whenPassed 边:它从 093710E4 指向 E18ADBB0。红框标出 Switch to WhenFailed 按钮。

如果需要把条件从 whenPassed 改为 whenFailed,点击 Switch to 按钮切换边类型。
切换后的边会在 Edge Type 中显示 WhenFailed,并提供反向切换按钮。下图中,1 标出已经切换后的 Edge Type,2 标出 Switch to WhenPassed 按钮:

一个 case 节点最多只能有一个执行依赖入边。也就是说,一个下游 case 只能由一个 whenPassed 或 whenFailed 条件直接触发。系统也会阻止自环和循环依赖。
编排 fan-out 并行分支
在 rule/v1.3 中,fan-out 没有单独的 YAML 字段。它的 YAML 结构是:多个下游 case 的 whenPassed 或 whenFailed 都引用同一个上游 case,并使用相同的触发条件。
在 Canvas View 中,你可以从同一个上游节点分别连到多个下游节点。红框标出同一个上游 case 发出的三条 whenPassed 连线:

Plain TextA ├─ whenPassed -> B ├─ whenPassed -> C └─ whenPassed -> D
对应 YAML 是:
YAMLkind: rule/v1.3 spec: rules: - run: A1B2C3D4 - run: B1B2C3D4 whenPassed: A1B2C3D4 - run: C1B2C3D4 whenPassed: A1B2C3D4 - run: D1B2C3D4 whenPassed: A1B2C3D4
当 A1B2C3D4 通过后,B1B2C3D4、C1B2C3D4、D1B2C3D4 会在语义上同时 ready。实际是否同时启动,取决于当前 Workspace 的可用并发槽位;如果槽位不足,平台会排队补位。
没有入边的 root case 在 rule/v1.3 下也可以并行调度:
YAMLkind: rule/v1.3 spec: rules: - run: A1B2C3D4 - run: B1B2C3D4 - run: C1B2C3D4
标记 Expect Fail
选择一个 case 节点,在右侧 Properties Panel 中打开 Expect Fail。红框标出 Expect Fail 控件。

被标记为 Expect Fail 的 case 会写成:
YAML- run: B1B2C3D4 whenPassed: A1B2C3D4 expect: fail
expect: fail 表示该 case 即使实际执行失败,也会向 Pipeline 报告 Passed。因此,如果后续 case 依赖它继续执行,应使用 whenPassed,不要使用 whenFailed。
配置 relay
Relay 用于把上游 case 运行时产生的变量传给下游 case。
准备 relay case
配置 relay 前,需要先准备好 case 的环境变量:
- 上游 case 必须有 Output Variables,也就是 Relay-Out 变量。
- 下游 case 必须有 Input Variables,也就是
type: env的输入环境变量。 - 变量名称和测试脚本里的读写逻辑应保持一致。
更多 case 侧配置请参考 Managing Test Case with Relay Case 和 Understanding Output Relay。
在 Pipeline Assembler 中配置 relay
- 在画布上选择提供数据的上游 case 节点,确认它已经声明 Output Variables (Relay-Out)。
- 在画布上选择消费数据的下游 case 节点。
- 在右侧 Properties Panel 找到 Input Variables (Relay-In)。
- 点击目标输入变量旁边的配置图标,或展开目标输入变量条目。
- 在 relay 表单中选择 Select Relay-Out Case。
- 选择 Select Relay-Out Variable。
- 如需要在日志中可见,勾选 Non-Secret Variable (nonSecret)。
- 点击 Apply。
下图演示的是上游 case 节点中 Output Variables (Relay-Out) 列表的位置。1 标出 Relay-Out 变量列表;实际配置时请选择你要提供运行时变量的上游 case。

然后选中下游 case,展开目标 Input Variables (Relay-In) 条目。如果条目尚未展开,点击输入变量旁边的配置图标即可打开同一个表单。下图中,1 标出 Relay-In 变量卡片,2 标出展开/收起控件,3 标出 Select Relay-Out Case,4 标出 Select Relay-Out Variable,5 标出 Non-Secret Variable,6 标出 Apply:

保存后,YAML 中会生成类似配置:
YAML- run: B1B2C3D4 whenPassed: A1B2C3D4 relay: - key: ACCESS_TOKEN refKey: A1B2C3D4/ACCESS_TOKEN nonSecret: true
不能跨 whenFailed 依赖配置 relay。如果一条边已经有 relay 引用,系统会阻止你把这条边切换成 whenFailed。如果必须改成失败分支,请先清除 relay 引用。
如果下游 case 消费上游 case 的 relay 输出,建议在画布上保留清晰的 whenPassed 执行依赖,让执行顺序和数据依赖保持一致。
使用 YAML View
当你已经知道完整规则结构,或者需要一次性调整多个依赖时,可以切换到 YAML View。
YAML View 会持久化以下字段:
runwhenPassedwhenFailedexpect: failrelay
切换视图和保存时,系统会解析 YAML、加载相关 case、检查图结构,并通过后端校验当前定义。保存失败时,请根据错误信息修正 YAML 或回到 Canvas View 调整。
YAML View 展示的是和画布等价的 Pipeline 定义。下图中,1 标出 schema version,2 标出带 relay 的预期失败分支,3 标出另一个带 relay 的 fan-out 兄弟分支,4 标出 BF18144B 的 whenFailed 失败分支。

新建或翻新 Pipeline 时,优先使用 kind: rule/v1.3。如果你打开的是历史 rule/v1.2 Pipeline,请确认是否只是维护旧行为;不要把 rule/v1.2 当作新 Pipeline 的默认版本。
复杂 v1.3 示例
下面的示例包含一个 setup case、三个 whenPassed fan-out 下游分支(其中一个设置 expect: fail)、relay,以及一个只有在某个分支失败时才执行的 whenFailed 分支。
YAMLkind: rule/v1.3 spec: rules: - run: '093710E4' - run: 'E18ADBB0' whenPassed: '093710E4' expect: fail relay: - key: URL refKey: 093710E4/BASE_URL nonSecret: true - run: 'AA923134' whenPassed: '093710E4' relay: - key: URL refKey: 093710E4/BASE_URL nonSecret: true - run: 'BD3C03F5' whenPassed: '093710E4' - run: 'BF18144B' whenFailed: 'AA923134'
这个示例在 Canvas View 中的核心结构是 093710E4 通过后扇出到三个同一波次的下游 case,并额外保留一条 whenFailed 分支:

这个 Pipeline 的执行语义是:
093710E4先执行。093710E4通过后,E18ADBB0、AA923134、BD3C03F5变为同一 ready 波次,可按rule/v1.3并行调度。E18ADBB0设置了expect: fail,即使实际失败,也会作为预期失败处理,不会导致 Pipeline 失败。AA923134使用093710E4输出的BASE_URL。- 只有
AA923134向 Pipeline 报告 Failed、Aborted 或 Timeout 时,BF18144B才会执行;如果AA923134通过,BF18144B会被跳过。
保存和验证
编辑完成后点击 Save。系统会:
- 从 Canvas View 生成 YAML,或读取 YAML View 当前内容。
- 校验 YAML 是否可解析。
- 校验 case key、依赖关系、relay 引用和循环依赖。
- 调用后端验证 Pipeline YAML。
- 保存 Pipeline 定义。
保存后,你可以在 Pipeline 详情页查看 Flow Diagram 和 Test Case List。触发一次执行后,在 Execution Detail 中确认:
- Pipeline 总状态是否符合预期。
expect: fail的 case 是否显示为预期失败或等价成功状态。- 未满足条件的
whenFailed分支是否被跳过。 rule/v1.3的 fan-out 分支是否在可用并发范围内并行启动。
常见问题
| 问题 | 处理方式 |
|---|---|
| 找不到要添加的 case | 确认 case 已注册,并且你在正确的 Workspace 中搜索。 |
| 不能连接两个节点 | 检查是否存在自环、循环依赖,或目标节点是否已经有一条执行依赖入边。 |
不能切换为 whenFailed | 如果这条依赖上存在 relay 引用,请先清除 relay。 |
| relay 表单没有可选变量 | 确认上游 case 已声明 Relay-Out,且下游 case 已声明 Input Variables。 |
| 保存失败 | 打开错误信息,检查 YAML 结构、case key、重复 run、relay refKey、whenPassed / whenFailed 互斥规则。 |
| fan-out 没有同时启动 | 确认 Pipeline 是 rule/v1.3,并检查 Workspace 当前并发槽位是否足够。 |
还有疑问?
我们的团队随时为您服务。欢迎联系我们,我们会尽快回复。