当前位置: 首页 > 知识库问答 >
问题:

你能在Cucumber的给定时间和步骤定义中定义实例变量吗

宇文鸿振
2023-03-14

我知道Cucumber可以在给定的步骤定义中定义实例变量。此实例变量成为范围的一部分。然后,您可以在定义When和Then的步骤中访问该实例变量。

您能否在When and Then step定义中定义实例变量,并在稍后的When and Then step定义中访问它们?

如果可能的话,在何时和然后步骤定义期间定义实例变量是否是一种常见的做法?

非常感谢。


共有1个答案

刘意
2023-03-14

是的,您可以在任何步骤类型期间设置实例变量。

例如,考虑到功能:

Feature: Instance variables

Scenario: Set instance variables during all steps
    Given a given step sets the instance variable to "1"
    Then the instance variable should be "1"
    When a when step sets the instance variable to "2"
    Then the instance variable should be "2"
    Then a then step sets the instance variable to "3"
    Then the instance variable should be "3"

步骤定义:

Given /a given step sets the instance variable to "(.*)"/ do |value|
    @your_variable = value
end
When /a when step sets the instance variable to "(.*)"/ do |value|
    @your_variable = value
end
Then /a then step sets the instance variable to "(.*)"/ do |value|
    @your_variable = value
end
Then /the instance variable should be "(.*)"/ do |value|
    @your_variable.should == value
end

您将看到场景通过,这意味着何时和然后步骤成功设置了实例变量。

事实上,给定的时间和时间只是彼此的别名。仅仅因为您将步骤定义定义为“给定”,它仍然可以被称为“何时”或“然后”。例如,如果使用的步骤定义是:

Then /a (\w+) step sets the instance variable to "(.*)"/ do |type, value|
    @your_variable = value
end
Then /the instance variable should be "(.*)"/ do |value|
    @your_variable.should == value
end

请注意,场景中的“给定”和“何时”可以使用第一个“然后”步骤定义。

至于在when和then步骤中设置实例变量是否是一种好的做法,这并不比在给定步骤中设置更糟糕。理想情况下,所有步骤都不会使用实例变量,因为它们会创建步骤耦合。但是,实际上,通过使用实例变量,我没有遇到重大问题。

 类似资料:
  • 自从我升级到最新的社区版IntelliJ 15.0.3以来,每当我使用alt-enter从功能定义文件自动生成步骤定义时,它都会以驼峰大小写而不是带下划线的常规样式创建方法。 例如,它过去是这样生成的 但现在它产生了通常的camelCase惯例: 有没有办法把这个设置改回第一种样式? 谢谢

  • TL:DR控制台不显示缺少步骤的步骤正则表达式 编辑:添加功能文件

  • 我不能为一个项目用cucumber执行简单的测试。我在Intellij13社区,使用cucumber插件。 我在features目录中编写了我的features文件,我还通过插件实现了创建它们的步骤。intellij可以识别功能文件中的我的步骤,它可以导航并转到步骤实现。当我尝试运行我的场景时,if无法声明“未定义的步骤”。任何帮助都将不胜感激。 以下是我如何组织我的项目:

  • 我的在中,我的在中 我的测试都运行正确,但是intelliJ拒绝查看步骤defs在哪里,即使我要求它创建一个新的步骤defs。这是在哪里配置的?

  • 我今天将我的serenity和cucumber测试升级到2.6.0 en cucumber 6版本。只需要更改大量程序包,并且功能文件的步骤不再链接到步骤定义。如果我的cucumberrunner的设置 但是,如果我在功能文件中查看intellij,您将无法再单击步骤以转到定义。当我运行功能文件时,我会得到以下异常: 我不确定是什么地方出了问题,因为相同的代码适用于以前的版本

  • 我们有一些功能文件,这些文件有长时间的测试,可以验证用非英语语言编写的多个内容,