Cucumber 如何实施';如果';小黄瓜

Cucumber 如何实施';如果';小黄瓜,cucumber,gherkin,Cucumber,Gherkin,我正在尝试将硒测试转换为小黄瓜。有没有办法在小黄瓜中实现if语句 示例:假设代码是以以下格式编写的。我只是写下面的描述。请理解双斜杠后的部分是实际的Selenium代码: // launch the application // login to application // navigate to page String str; if(str== "XYZ") { // verify title } //verify text field 1 //verify test field

我正在尝试将硒测试转换为小黄瓜。有没有办法在小黄瓜中实现if语句

示例:假设代码是以以下格式编写的。我只是写下面的描述。请理解双斜杠后的部分是实际的Selenium代码:

// launch the application 
// login to application
// navigate to page
String str;
if(str== "XYZ")
{
    // verify title
}
//verify text field 1
//verify test field 2
//verify select box
为此,我尝试用小黄瓜编写如下代码

Given user launches the application
When user login with valid credentials
and navigate to required page
When String str is "XYZ"
Then verify title
And verify text field 1
And verify test field 2
And verify select box

但此代码不正确,因为如果str不等于“XYZ”,我们希望不验证标题,但应验证其他验证,如文本字段1、2和选择框。

严格来说,您应创建一个替代语句,内容如下:

给定用户启动应用程序
当用户使用有效凭据登录时
并导航到所需页面
当字符串str不是“XYZ”时

理想情况下,这种详细程度不会出现在小黄瓜场景中。最好的方法是描述业务用例,而不是低级细节。这就是小黄瓜的设计目的:与非技术利益相关者进行沟通,以便您能够确定您首先构建的东西是否正确。以下是我要写的:

Given the user is logged in
And the user is on the required page
When they enter data that requires the optional fields to be validated
And they enter invalid data in the optional fields
Then the form shows an error on the optional fields
低级别的细节并不重要(字符串是否特别是“XYZ”或是否是
标题
字段并不重要),因此这些细节应该隐藏在步骤定义和/或单元测试中

为了继续检查其他字段,您可以在此之后添加另一个步骤:

When they enter invalid data in all of the other fields
Then each other field has an error message attached to it.
同样,无需指定实际字段,也无需将它们分隔为各自的步骤。这样做的目的是表达场景的高级业务价值,即在应该验证表单时对表单进行验证


保持高水平的好处是,当表单发生变化时(最终可能会发生变化),该场景可以保持不变。这是正确的,因为业务案例是相同的:它应该在应该验证的时候进行验证。所有更改都将出现在步骤定义中。这意味着没有理由与您的利益相关者再次讨论您的场景是否仍在测试正确的东西。

您可以编写场景,有点像这样:

Given the user launches the application
When user login with valid credentials
And navigates to required page
Then he should see the page datails
步骤中,然后管理所有逻辑

Then(/^he should see the page details$/) do
  if condition
    ...
  else
    ...
  end
end

Gherkin不是一种编程语言,不能使用
if
else
条件。它是BDD框架的一部分,是为了让涉众和其他非技术资源了解测试过程的内容而实现的。因此,总是建议您尽可能保持小黄瓜的简单性和通用性。

如果是在小黄瓜中,您不需要实现

小黄瓜是关于交流的,而那些你想与之交流的人,非编码者,不知道if语句是什么。他们也不在乎


解决方案是什么?两个场景涵盖这两种情况。

可能的答案这里您好@DanielFintinariu,我浏览了链接,但我需要一种方法/解决方案,如果可能的话,不将场景拆分为两个测试场景。根据场景,您可以使用“给定时间-步骤”。@Akash Chavan,正如该链接中的答案所述,功能文件用于业务行为,未编程。这种方式可能重复??给定用户在用户使用有效凭据登录时启动应用程序,并在字符串str为“XYZ”时导航到所需页面,然后验证标题和验证文本字段1,验证测试字段2,并在字符串str不是“XYZ”时验证选择框验证文本字段1、验证测试字段2和验证选择框这不是小黄瓜,您只是用代码硬编码小黄瓜语法,并像调用外部方法一样调用它