创建你的第一个 Cucumber 脚本(2 个示例)

⚡ 智能摘要

Cucumber 脚本执行功能可帮助您使用步骤定义文件将纯语言 Gherkin 场景转换为可运行的自动化测试,从而使团队能够验证行为、在利益相关者之间共享意图,并交付可靠的 BDD 驱动项目。 Cucumber or Cucumber-JVM。

  • 🥒 小黄瓜基础知识: 功能文件以 Given-When-Then 语法描述场景,测试人员和业务团队都可以阅读。
  • 📝 步骤定义: Gherkin 的每个步骤都对应一个用 Ruby 编写的代码块, Java或其他受支持的语言。
  • ⚙️ 项目设置: RubyMine 或任何 IDE 都可以托管 features 文件夹、step_definitions 文件夹和 runner 配置。
  • 两个例子: 乘法场景和 Guru99 个演示登录场景展示了端到端的 BDD 执行。
  • 🧪 现代版本: Cucumber-JVM 7.x 和 Cucumber Ruby 9.x 仍然是 CI 流水线中使用的当前稳定版本。

Cucumber 脚本

在本教程中,您将创建 Cucumber 使用 Gherkin 语法和步骤定义文件测试两种场景的脚本。 Cucumber 是一个流行的 BDD 框架,它将纯语言特性文件与可执行测试代码连接起来,以便业务分析师和开发人员可以就同一规范进行协作。

Cucumber 脚本 1:乘以 2 Numbers

在这第一 Cucumber 例如,您将编写一个简单的 Feature 文件,用于计算两个数字的乘积,然后在 Ruby 中创建一个匹配的步骤定义文件。如果您使用……,则适用相同的工作流程。 Cucumber-JVM 7.x Java 或者 Kotlin IntelliJ IDEA.

步骤1) 通过以下方式打开 RubyMine 编辑器 Windows 开始菜单。

Cucumber 脚本:乘以 2 Numbers

步骤2) 在 RubyMine 编辑器中,单击“创建新项目”。

Cucumber 脚本:乘以 2 Numbers

步骤3) 选择项目位置并点击“创建”。

Cucumber 脚本:乘以 2 Numbers

步骤4) 在项目根目录下创建一个文件目录,用于存放你的 Feature 文件。

Cucumber 脚本:乘以 2 Numbers

步骤5) 将目录命名为 “特征”. Cucumber 将自动扫描此文件夹。

Cucumber 脚本:乘以 2 Numbers

步骤6) 在“yourfolder/features/”目录下创建并保存名为“yourfilename.feature”的文件。

点击 开始 如果视频无法访问

Cucumber 脚本:乘以 2 Numbers

Cucumber 脚本:乘以 2 Numbers

步骤7) 要执行此场景,请将以下程序保存到 Feature 文件中。请注意 Gherkin 关键字(例如 Feature、Scenario、Given、When 和 Then)如何描述测试行为。

Cucumber 脚本:乘以 2 Numbers

代码:

Feature: Multiplication 
  I multiply two numbers 
	Scenario: multiply a and b 
	  Given I have variable a 
	  And I have variable b 
      When I multiplication a and b 
      Then I display the Result

步骤8) 现在运行你的第一个 Feature 文件。

点击“使用 Ruby 启动命令提示符”。

Cucumber 脚本:乘以 2 Numbers

您收到的输出结果如下所示。

Cucumber 脚本:乘以 2 Numbers

你会看到一个错误,因为你必须编写一个与功能文件相匹配的步骤定义文件。

步骤9) 为您的功能文件创建步骤定义文件。

在 RubyMine 编辑器中创建一个名为“step_definition”的新文件夹。

Cucumber 脚本:乘以 2 Numbers

Cucumber 脚本:乘以 2 Numbers

步骤10) 将文件保存在“yourfolder/features/step_definitions”中,并命名为test_step.rb。

Cucumber 脚本:乘以 2 Numbers

Cucumber 脚本:乘以 2 Numbers

步骤11) 将以下代码写入步骤定义文件。每个代码块都对应特征文件中的一个 Gherkin 步骤。

Cucumber 脚本:乘以 2 Numbers

Code :

Given(/^I have variable a$/) do 
  @a = 50
end

And(/^I have variable b$/) do 
  @b = 70 
end

When(/^I multiplication a and b$/) do 
  @mul = @a * @b
end

Then(/^I display the Result$/) do 
  puts "Multiplication of #{@a} and #{@b} is #{@mul}"
end

步骤12) 再次运行 Feature 文件。

Cucumber 脚本:乘以 2 Numbers

结果如下所示。

Cucumber 脚本:乘以 2 Numbers

Cucumber 脚本 2:验证输入或未输入电子邮件 ID 时的输出

在第二个示例中,您将使用 Ruby。 Watir 驱动浏览器并验证两种注册场景 Guru99 演示站点。如果您采用,则适用相同的模式。 Cucumber-JVM 7.x Selenium WebDriver 和 Java.

在这个例子中我们使用 红宝石.

测试场景:验证未输入电子邮件地址时的输出结果。

测试步骤:

  1. 打开浏览器
  2. 转到 https://demo.guru99.com/
  3. Do 不会 输入邮箱地址
  4. 点击提交

测试场景输入邮箱地址后,验证输出结果。

测试步骤:

  1. 打开浏览器
  2. 转到 https://demo.guru99.com/
  3. 输入邮箱地址
  4. 点击提交

Code 在 Feature 文件中:

Feature: guru99 Demopage Login
To Login in Demopage we have to enter login details
Scenario: Register On Guru99 Demopage without email
Given I am on the Guru99 homepage
When enter blank details for Register
Then error email shown
Scenario: Register On Guru99 Demopage with valid email
Given I am on the Guru99 homepage
When enter details for Register
Then login details shown

Code 步骤定义文件中:

require 'watir-webdriver'

require 'colorize'

browser = Watir::Browser.new

Given (/^I am on the Guru99 homepage$/)do

browser.goto "https://demo.guru99.com"

end

When (/^enter blank details for Register$/)do

browser.text_field(:name,"emailid").set(" ")

browser.button(:name,"btnLogin").click

end

Then (/^error email shown$/)do

puts " Email is Required".red

browser.close

end

When (/^enter details for Register$/)do

browser = Watir::Browser.new

browser.goto "https://demo.guru99.com"

browser.text_field(:name,"emailid").set("<a href="mailto:guru99@gmail.com">guru99@gmail.com</a>")

browser.button(:name,"btnLogin").click

end

Then (/^login details shown$/)do

puts " Sucessfully register"

browser.close

end

在命令提示符中运行代码,您将看到以下输出。

输入或未输入电子邮件 ID 时验证输出

常见问题

功能文件是一个扩展名为 .feature 的纯文本文件,它使用 Gherkin 语法来描述一个应用程序功能。它将相关的场景分组,这些场景使用 Given、When 和 Then 步骤编写,以便非技术利益相关者可以与开发人员一起阅读和验证行为。

Gherkin 的每个步骤都仅包含文本。 Cucumber 需要一个步骤定义,将步骤映射到 Ruby 中的可执行代码。 Java或者其他语言。没有那张地图。ping运行程序报告未定义的步骤,场景无法执行预期的逻辑。

CucumberJVM 7.x 是当前稳定版本,推荐用于新系统。 Java 以及 Kotlin 项目。 Cucumber Ruby 9.x 仍然是 Ruby 团队的现代之选。这两个版本都支持 JUnit 5、并行执行和基于标签的 CI 流水线过滤。

AI 助手会分析用户故事、验收标准和历史缺陷,以 Given-When-Then 格式编写 Gherkin 场景。它们会提供边界情况、备选方案和标签建议,帮助 BDD 团队覆盖更多行为,而无需花费数小时手动编写每个 Feature 文件。

是的。AI 工具读取 Feature 文件,将每个 Gherkin 步骤与现有代码匹配,并在 Ruby 或其他语言中生成新的步骤定义方法。 Java它们会生成样板代码、参数正则表达式和断言存根,这样开发人员只需完善业务逻辑,而无需手动编写每个粘合函数。

总结一下这篇文章: