步骤编辑

本节将介绍如何在 CukeTest 中添加与编辑组成测试场景的核心——步骤(Step),以及当一条步骤需要传递不同类型的数据时,该如何灵活使用各种参数形式(如文档字符串、步骤表等)。

什么是步骤?

如果把“场景(Scenario)”看作是一个完整的测试用例,那么“步骤”就是用例里的一步步操作说明。每一个步骤都对应着后台的一段自动化脚本(Step Definition)。

关键字说明

在 BDD 的标准写法中,一个规范的步骤总会以以下特定的关键字开头:

  • Given (假如 / 假定 / 假设):设定场景的初始条件。例如:“假如 用户已登录系统”。
  • When (当):执行触发的动作。例如:“当 用户点击提交按钮”。
  • Then (那么):验证执行后的期望结果。例如:“那么 页面应显示成功提示”。
  • And / But (同时 / 并且 / 但是 / 而且):用于连接多个相同类型的步骤,让语句更通顺。

Tip

最佳实践:合理组合 GivenWhenThen 的逻辑关系,可以让测试报告像人类语言一样自然流畅,哪怕是非技术人员也能看懂这条测试的业务目的。

添加与插入步骤

在 CukeTest 的 可视模式 中添加步骤非常直观:

1. 在场景末尾追加步骤

每当你创建一个新场景时,场景框的底部都会有一个绿色的 添加一个步骤 按钮。

  • 操作:单击此按钮。
  • 预期结果:将在场景的最末尾,添加一个高亮的新步骤框。

2. 在指定步骤前插入

若你需要在一个已编排好顺序的流程中间插入一步:

  • 操作:单击任意已存在的步骤,此时该步骤框右上角会浮现出一个悬浮工具栏。点击带有 + 号的插入按钮。
  • 预期结果:在这个你点击的当前步骤正上方,会插入一个全新的空白步骤。

编辑步骤内容

新建了步骤后,你可以通过以下两种方式来修改其描述文本:

  1. 直接双击:双击步骤区域,文字部分会变为输入框状态。

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

步骤参数传值方式指南

在很多情况下,我们的通用操作步骤里需要塞入不同的数据(比如:输入账号名为“Alice”,密码长度为 6)。这时候我们需要了解如何向背后的自动化脚本“传递参数”。

在 CukeTest 中,一共有以下三种主流的数据传递方式,适合不同的场景诉求:

传值方式 如何写 何时用 / 适合场景 步骤实现代码接收类型
1. 占位符 / 直接传参 步骤里直接写值:假如 用户输入密码 12345。或使用 <变量名> 从示例表取值。 最常规。参数短小精悍,适合单行变量(如数量、单个名称等)。 基本类型(如 intstring
2. 文档字符串 (Doc String) 步骤下方附加由 """ 包围的文本块。 当参数是一整段长文本,例如邮件正文、完整 JSON、XML 等。 string 类型长文本
3. 步骤表 (Step Table) 步骤下方附加由 | 分隔的数据表。 当参数是一组结构化数据,例如批量创建用户、表单数据等。 表格对象(如 DataTable / Table

Warning

注意:针对某一个单独的步骤,你只能选择追加文档字符串步骤表的其中一种。

文档字符串 (Doc String)

这是什么? 它允许你向步骤定义一次性传入大量的、跨多行的整段干净文本,而不需要用繁琐的换行转义符。

操作说明

  1. 点击或悬停在一个步骤上,在出现的工具条中找到并点击 添加文档字符串 图标。

    (或者,右键点击步骤,选择 添加文档字符串)
  2. 在新弹出的文本框内写入大段内容。

预期结果:当切换到文本模式时,该步骤下方会多出一个通过三个双引号 """ 包裹的块区域:

   假如 请求接口的发包报文如下
   """
   {
      "user_name": "Tom",
      "action": "login"
   }
   """

生成的自动化代码定义,会自动接收这个包裹的报文内容并将其当作第一个参数传入:

JavaScript
Python
// 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 表格),用于一次性给特定的这一步操作塞入一组数据矩阵。

操作说明

  1. 点击步骤,在悬浮工具条中点击 添加表(类似表格的图标)。

    (或者,右键点击步骤,选择 添加表)
  2. 双击表格的列头以重命名列属性,在单元格内部填入批量数据。

预期结果:生成的自动化代码将会接收到一个特殊的 DataTable 对象。引擎内置提供了强大的 API 来将这堆表格数据随时反向解析为数组集合或是 JS 对象集合。

详细表格数据在底层代码的高级转化用法,请查阅数据表对象操作说明

results matching ""

    No results matching ""