步骤编辑
本节将介绍如何在 CukeTest 中添加与编辑组成测试场景的核心——步骤(Step),以及当一条步骤需要传递不同类型的数据时,该如何灵活使用各种参数形式(如文档字符串、步骤表等)。
什么是步骤?
如果把“场景(Scenario)”看作是一个完整的测试用例,那么“步骤”就是用例里的一步步操作说明。每一个步骤都对应着后台的一段自动化脚本(Step Definition)。
关键字说明
在 BDD 的标准写法中,一个规范的步骤总会以以下特定的关键字开头:
- Given (假如 / 假定 / 假设):设定场景的初始条件。例如:“假如 用户已登录系统”。
- When (当):执行触发的动作。例如:“当 用户点击提交按钮”。
- Then (那么):验证执行后的期望结果。例如:“那么 页面应显示成功提示”。
- And / But (同时 / 并且 / 但是 / 而且):用于连接多个相同类型的步骤,让语句更通顺。
Tip
最佳实践:合理组合 Given、When、Then 的逻辑关系,可以让测试报告像人类语言一样自然流畅,哪怕是非技术人员也能看懂这条测试的业务目的。
添加与插入步骤
在 CukeTest 的 可视模式 中添加步骤非常直观:
1. 在场景末尾追加步骤
每当你创建一个新场景时,场景框的底部都会有一个绿色的 添加一个步骤 按钮。
- 操作:单击此按钮。
- 预期结果:将在场景的最末尾,添加一个高亮的新步骤框。

2. 在指定步骤前插入
若你需要在一个已编排好顺序的流程中间插入一步:
- 操作:单击任意已存在的步骤,此时该步骤框右上角会浮现出一个悬浮工具栏。点击带有
+号的插入按钮。 - 预期结果:在这个你点击的当前步骤正上方,会插入一个全新的空白步骤。

编辑步骤内容
新建了步骤后,你可以通过以下两种方式来修改其描述文本:
直接双击:双击步骤区域,文字部分会变为输入框状态。

通过快捷菜单:右击需要修改的步骤,并在弹出的悬浮工具栏中,点击“编辑”按钮。

步骤参数传值方式指南
在很多情况下,我们的通用操作步骤里需要塞入不同的数据(比如:输入账号名为“Alice”,密码长度为 6)。这时候我们需要了解如何向背后的自动化脚本“传递参数”。
在 CukeTest 中,一共有以下三种主流的数据传递方式,适合不同的场景诉求:
| 传值方式 | 如何写 | 何时用 / 适合场景 | 步骤实现代码接收类型 |
|---|---|---|---|
| 1. 占位符 / 直接传参 | 步骤里直接写值:假如 用户输入密码 12345。或使用 <变量名> 从示例表取值。 |
最常规。参数短小精悍,适合单行变量(如数量、单个名称等)。 | 基本类型(如 int、string) |
| 2. 文档字符串 (Doc String) | 步骤下方附加由 """ 包围的文本块。 |
当参数是一整段长文本,例如邮件正文、完整 JSON、XML 等。 | string 类型长文本 |
| 3. 步骤表 (Step Table) | 步骤下方附加由 | 分隔的数据表。 | 当参数是一组结构化数据,例如批量创建用户、表单数据等。 | 表格对象(如 DataTable / Table) |
Warning
注意:针对某一个单独的步骤,你只能选择追加文档字符串或步骤表的其中一种。
文档字符串 (Doc String)
这是什么? 它允许你向步骤定义一次性传入大量的、跨多行的整段干净文本,而不需要用繁琐的换行转义符。
操作说明:
- 点击或悬停在一个步骤上,在出现的工具条中找到并点击
添加文档字符串图标。
(或者,右键点击步骤,选择添加文档字符串) - 在新弹出的文本框内写入大段内容。
预期结果:当切换到文本模式时,该步骤下方会多出一个通过三个双引号 """ 包裹的块区域:
假如 请求接口的发包报文如下
"""
{
"user_name": "Tom",
"action": "login"
}
"""
生成的自动化代码定义,会自动接收这个包裹的报文内容并将其当作第一个参数传入:
// JavaScript 范例
Given("请求接口的发包报文如下", async function (docString) {
// docString 参数此时接收到的就是那段包含大括号换行的整段 JSON 字符串
console.log(docString);
return 'pending';
});# Python 范例
from leanproAuto import Util
@Given("请求接口的发包报文如下")
def step_impl(context, doc_string):
# doc_string 参数此时接收到的就是那段包含大括号换行的整段 JSON 字符串
print(doc_string)
pass
步骤表 (Step Table)
这是什么? 它直接绑定在上方的步骤中(区别于场景大纲自带的驱动级 Examples 表格),用于一次性给特定的这一步操作塞入一组数据矩阵。
操作说明:
- 点击步骤,在悬浮工具条中点击
添加表(类似表格的图标)。
(或者,右键点击步骤,选择添加表) - 双击表格的列头以重命名列属性,在单元格内部填入批量数据。
预期结果:生成的自动化代码将会接收到一个特殊的 DataTable 对象。引擎内置提供了强大的 API 来将这堆表格数据随时反向解析为数组集合或是 JS 对象集合。
详细表格数据在底层代码的高级转化用法,请查阅数据表对象操作说明。