如何在小黄瓜中实现"如果"



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

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

// 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 和选择框。

如果在 Gherkin 中,则不会实现。

Gherkin是关于沟通的,那些你想与之交流的人,非编码人员,不知道if语句是什么。他们也不在乎。

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

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

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"或它是title字段并不重要(,因此这些应该隐藏在步骤定义和/或单元测试中。

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

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步骤中,您可以管理所有逻辑。

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

Gherkin不是一种使用ifelse条件的编程语言。它是BDD框架的一部分,旨在使利益相关者和其他非技术资源了解测试过程的内容。因此,始终建议您保持小黄瓜尽可能简单和通用。

严格来说,您应该按照以下方式创建一个替代语句:

Given user launches the application When user login with valid credentials and navigate to required page When String str is NOT "XYZ"

最新更新