剧本示例表 (Example)
本节介绍如何使用示例表 (Example) 实现 BDD 测试中的数据驱动。
什么是示例表?
在测试过程中,如果需要对同一组操作步骤使用多组不同的参数进行验证,可以通过示例表来管理这些数据,而无需重复编写相同的场景或步骤。
示例表 (Example) 通常与 场景大纲 (Scenario Outline) 配合使用,作为其关联的数据源。
工作原理
- 在场景大纲中使用占位符(如
<username>,<password>)代替固定参数。 - CukeTest 会遍历关联示例表中的每一行数据,并将数据自动填充至对应的占位符中。
- 每一行数据都会触发一次场景实例化并独立执行。
Tip
提示:一个场景大纲可以关联一个或多个示例表。如果场景大纲未配置示例表,该场景在执行时将被跳过。

使用多张示例表
在某些复杂场景中(如验证退款业务的不同边界情况),您可以将测试数据分类并存放在多个示例表中。
配合标签 (Tag) 功能,您可以为每个示例表设置特定标签。这样在执行测试时,可以通过标签过滤机制仅运行特定分组的示例表数据。
示例表的使用方式
CukeTest 支持内置示例表和链接外部示例表两种管理方式。
1. 内置示例表
直接在 Feature 剧本文件中定义和保存测试数据。
- 创建:在可视模式下,右键点击场景大纲标题,选择
添加实例。 - 编辑:双击单元格即可进入编辑状态,使用
Tab键可快速跳转至下一个单元格并自动保存。
例如,在登录测试中,可以通过示例表分别定义非法字符、空密码以及正常登录等多组测试用例:
示例引自 CNodeJS 社区 UI 自动化项目。
2. 链接外部示例表
当测试数据量较大或需要由其他业务部门维护时,可以将外部文件作为数据源。
链接示例表 允许剧本文件直接调用外部存储的测试数据集,保持剧本内容的简洁性。
- 操作:右键点击场景大纲并选择
添加链接示例表,或在示例表工具条中点击链接图标
选择目标文件。
Note
说明:当前 CukeTest 仅支持链入由逗号分隔标准协议制作的 .csv 表格文件。
配置完成后,外部数据将直接展示在剧本编辑器中:
如果此时我们将视口切换入文本模式,其底层的 Gherkin 代码映射非常简单:
# language: zh-CN
功能: 用户注册
对于首次进入的用户,登陆前进行注册,之后才可以登录进入
场景大纲: 用户注册
假如已经进入用户注册页面
当用户名字段后输入"<username>"
当密码字段后输入"<password>"
当确认密码字段后输入"<confirm>"
当电子邮箱字段输入"<email>"
那么点击注册按钮
例子:
#data_source: ..\data.csv
Note
您会注意到,对于链接型的示例表,最核心的就是那行跟随着例子 (Example) 头的特殊指令:#data_source: + 文件路径 声明。
链接表的限制说明
- 它是只读视窗:链接示例表展示出的那圈表格视图只是为了方便你在不用退出软件的情况下观察外部数据集。您无法在这个界面上点击直接改写它。只有点开源文件进行保存后,右键这个链接表格点击“刷新”重新载入新数据。
- 留意平台跨度斜杠:当在相对路径里写类似
..\data.csv这样的反斜杠时,请记住由于不同主流操作系统的底层隔阂,这个路径写法只能在 Windows 上解析。如果你是个跨平台团队,建议一律使用更规范的标准斜杠/作为多级目录的分隔符。
示例表与文档字符串的组合使用
示例表(Example)不仅可以为普通步骤参数提供值,
也可以在 文档字符串(Doc String) 和 步骤表(Step Table) 中使用 <变量名> 进行替换。
也就是说:
<变量>可以出现在 步骤文本- 也可以出现在 Doc String
- 还可以出现在 Step Table
在执行场景时,框架会用 Example 表中的数据替换这些占位符。
例如:
场景大纲: 在 Doc String 和 Step Table 中使用 Example 数据
假如使用长文本
"""
这段文本中的占位符会被替换:<text>
"""
当使用步骤表数据
| id | value |
| 1 | <data> |
例子:
| text | data |
| 示例文本1 | 动态值 |
执行时:
<text>会被替换为示例文本1<data>会被替换为动态值
示例表的键盘快捷操作
当示例表处于编辑状态时,可以使用以下快捷键快速编辑表格:
| 快捷键 | 作用 |
|---|---|
Enter 或 Tab |
保存当前单元格,并移动到 下一个单元格 |
Shift + Enter 或 Shift + Tab |
保存当前单元格,并移动到 上一个单元格 |
这些快捷键可以帮助你在表格中快速录入或修改数据。