演练:创建简单的Cucumber测试脚本

本章旨在实现以下目标:

  • 使用CukeTest创建一个简单的行为驱动测试脚本。
  • 创建剧本文件并实现测试代码。
  • 运行测试并生成测试报告。

以下是操作步骤.

1. 新建项目

点击工具栏上的 新建项目 按钮,弹出创建项目对话框。 image

在对话框中,输入BasicTest作为项目名,选择 Basic 作为项目模板,选择一个项目路径,然后点击 确定 。CukeTest将为您创建一个新的项目。

2. 编辑剧本

添加剧本名称和描述

在上一节完成项目创建后,会自动打开feature1.feature文件。点击可视化按钮 ,您可以在可视化界面中进行修改。默认的feature文件可视化界面如下:
image

要添加剧本的名称和描述,请按照以下步骤操作:

  1. 双击<剧本名称>使其变为可编辑状态,然后输入“加法”。

  2. 按下键盘上的Enter键,CukeTest会自动跳转到<剧本描述>框,将内容更改为:

为了避免一些愚蠢的错误
作为一个数学白痴
我希望有人告诉我数字相加的结果

完成上述步骤后,我们的feature文件内容应该如下图所示:
image

编辑场景

按照以下步骤填充一个场景:

  1. 在场景标题上,双击鼠标,使<场景名称>变为可编辑状态,将其内容更改为“两个数相加”;
  2. 按下Enter键,自动定位到操作步骤上面,将第一个操作步骤修改为“我已经在计算器里输入6”,并选择关键字为“假如”;
  3. 按下Enter键,自动跳转到下一个操作步骤,并添加如下内容:“我按相加按钮并输入7”,关键字为“当”;
  4. 根据以上操作,我们可以添加第三个操作步骤:“当我按'相加'按钮”,第四个操作步骤为:“那么我应该在屏幕上看到的结果是13”。(添加新的操作步骤时,您也可以点击添加一个步骤按钮)。

最后操作完成的界面应该是这样的:

image

以上操作是在 可视 界面中完成的。点击文本按钮 ,feature1.feature文件的内容应该如下所示:

# language: zh-CN
功能: 加法
  为了避免一些愚蠢的错误
  作为一个数学白痴
  我希望有人告诉我数字相加的结果

  场景: 两个数相加
    假如我已经在计算器里输入6
    当我按相加按钮并输入7
    那么我应该在屏幕上看到的结果是13

您也可以在 文本 界面中编辑feature文件,然后切换回 可视 界面,效果是一样的。

3. 实现自动化代码

现在我们已经有了feature文件,其中定义了场景和场景中的步骤,接下来可以直接生成自动化代码的样例。

请按照以下步骤生成自动化代码:

  1. 打开step_definitions/definitions1.js文件,然后回到feature文件的可视界面。点击操作步骤后面的灰色按钮 生成按钮 ,这将自动生成对应的自动化代码样例。自动生成的步骤代码如下图所示:
    自动生成的步骤描述

  2. 重复步骤1,为场景中的其余未实现步骤按照相同方式生成类似的代码框架。

  3. 修改 step_definitions/definitions1.js 文件,根据生成的代码样例实现具体的步骤逻辑。最终代码如下所示:

JavaScript
const { Given, When, Then } = require('cucumber');
const assert = require('assert'); // 1. 引入了 assert 断言库

//// 你的步骤定义 /////

// 2. 参数名由 arg1 改为了 num ,更加直观
Given("我已经在计算器里输入{int}", async function (num) {
   this.sum = num;
   // 3. 删除了 return 'pending'
});

When("我按相加按钮并输入{int}", async function (num) {
   this.sum += num;
});

Then("我应该在屏幕上看到的结果是{int}", async function (result) {
   assert.equal(this.sum, result);
});

在上述代码中,我们做了以下修改:

  1. 引入了assert断言库:因为第三个步骤需要使用断言来判断运行结果是否正确,我们引入了assert库来实现断言功能。如果在工具箱中拖拽“常用”->“断言”到脚本中,将会自动生成断言脚本和相应的引用。
  2. 修改参数名:默认情况下,参数名为arg*,例如arg1arg2等。在这里,我们将默认参数名修改为符合语境的名称,使脚本更易于阅读。
  3. 删除了return 'pending'脚本:如果不删除此行代码,它将被视为未实现的步骤,并在报告中显示。务必注意删除这行代码。

4. 运行项目

在工具栏中,点击【运行项目】按钮 image ,将自动运行我们定义的测试用例,并生成测试报告。

运行完成后,您将会看到生成的测试报告,如下图所示:

image

在测试报告中,您可以查看测试用例的执行情况,以及每个步骤的执行结果。这样,您可以及时了解项目的测试覆盖率和执行情况,从而更好地控制和管理项目的质量。

5. 创建数据驱动的测试

现在我们已经有一个可运行的场景,它可以运行一个加法操作并验证结果。然而,在实际测试中,我们通常需要使用更多的数据输入来验证功能的各种情况。为了实现数据驱动的自动化测试,我们可以使用Cucumber中的场景大纲(Scenario Outline)功能。

下面的步骤将向您展示如何将一个已有的场景修改为一个场景大纲:

您可以选择在 可视 界面或 文本 界面中进行操作。在这里,我们将描述在 可视 界面中的操作。 文本 界面的操作类似于其他文本编辑器。

  1. 点击场景标题前面的图标 image ,或者右键单击场景标题,弹出场景菜单,选择【更改场景类型】->【场景大纲】:
    image

    现在场景变成了场景大纲,其中包含一个示例表格:

    您可以注意到,标题上显示的场景类型已更新为“场景大纲”,并且数字参数已自动提取到表格中。

  2. 参数名称“param1”和“param2”可能不太直观,我们可以将这些参数名称更新为更具描述性的名称。双击表头,使其可编辑,并将参数名称更改为更有意义的名称。

    还要更新步骤中的参数名称,使其与示例表格的表头名称相同。

    在编辑表格时,您可以使用Tab键或Shift + Tab键在单元格之间前后导航。按Tab键可以在当前行创建新的单元格,按Shift + Tab键可以在当前行创建新的列。

  3. 更新数据表格,添加更多行数据。您可以在表格的任意位置双击,然后开始编辑。按Tab键或Shift + Tab键进行导航。如果您位于表格的最后一个单元格,并再次按下“Tab”键,将会创建新的一行,然后您可以编辑新的数据行。

    您还可以右键单击表格,并选择菜单项【插入列】或【添加列到末尾】来插入新的列。

    或者,您可以右键单击表格,将表格导出为CSV文件,在其他应用程序中编辑数据(如Excel),然后重新导入。

    另外请注意,一个场景大纲可以有多个示例表格,因此您可以将多个表格导入到场景大纲中。单击表格时,您可以在表格工具栏上选择导入和导出功能:

  4. 验证:在“文本”视图中,文本应类似于以下内容:

    场景大纲: 两个数相加
      假如我已经在计算器里输入<operand1>
      当我按相加按钮并输入<operand2>
      那么我应该在屏幕上看到的结果是<result>
      例子: 
       | operand1 | operand2 | result |
       | 6        | 7        | 13     |
       | 0        | 1        | 1      |
       | 10       | 5        | 15     |
       | 320      | 45       | 365    |
    

    再次运行此报告时,您将获得以下报告:

    您可以看到,对于每行数据,它将运行一次场景,因此您可以在报告中获得4个场景的结果。我们没有添加任何新的代码,只是通过添加数据行来获得更多的场景验证情况。这是数据驱动测试的优势所在。

6. 自定义运行配置

当项目中有很多场景时,有时候我们只想运行其中的某些场景,这时可以为不同的场景或剧本添加标签,然后在运行时通过标签来过滤想要运行的场景。下面是如何通过标签来过滤运行场景的步骤:

  1. 添加标签

    在【场景大纲】的顶部双击添加标签:

    image

    输入新标签名称为“math”并移开鼠标,它会自动转换为标签样式:

    image

  2. 编辑场景大纲

    切换到“文本”视图,编辑场景大纲以添加以下文本(在红色圆圈中的线条表示标签):

    在上图中,我们将一个Example表格拆分为两个表格,每个表格都带有一个标签。请注意,我们可以为Feature、Scenario或Example表格添加标签以便后续过滤运行。

  3. 编辑运行配置

    点击工具栏上的【运行项目】按钮旁边的向下箭头,然后选择【编辑运行配置】:

    image

    这将打开运行配置对话框。您也可以通过点击菜单【运行】->【编辑运行配置文件】来打开对话框。

  4. 添加标签过滤器

    在配置窗口中,点击【新建配置文件】创建一个新配置,在【标签过滤器】中填写 @math and @basic

    image

    点击 确定 后,对话框会关闭并保存配置。

  5. 选择配置运行

    点击下拉箭头,选中 配置1 ,如下图所示,这样就会运行这个配置:

    image

    通过以上配置,只有同时带有@math@basic标签的场景会被运行,达到了我们想要的过滤效果。

    从测试报告中可以看到,只有带有标签@math@basic的场景被执行了,其他没有标签的场景并未运行。这样我们可以根据需要灵活地选择运行特定标签的场景,方便了测试的管理和执行。

    image

results matching ""

    No results matching ""