if else概念是否可用于特征文件(Gherkin语言)?

时间:2015-05-14 09:08:46

标签: cucumber cucumber-jvm gherkin

无论如何我们可以在功能文件中使用if / else概念吗?例如:

  Scenario: User should be able to check login page
  Given I am on login page
  When I click on SignIn button 
  Then I should be in home page 
  If yes
  Then I will create a new profile
  Else
  Then I will logout from page 

4 个答案:

答案 0 :(得分:8)

不是我知道的。 Gherkin(和黄瓜)最好在他们指定谨慎的商业案例时使用,并且应该是可重复的,否则他们很难遵循和测试。看起来你至少有两个故事:

Scenario: A new user should be asked to sign in
  Given I am a new user
  And I navigate to the login page
  When I click on SignIn button
  I should not be able to get to the home page

Scenario: An existing user should be able to log in
  Given I am an existing user
  And I navigate to the login page
  And I submit valid credentials
  When I click on SignIn button
  I should be taken to the home page

答案 1 :(得分:4)

不,你不能,你不应该。功能文件用于商业行为,而不是编程。

根据您的情况,我认为您正在尝试处理不同的行为,具体取决于您是否已注册。要做到这一点,你会写两个场景

Given I am registered
When I 
Then I should ....

Given I am a new user
When I ...
Then I should be asked to register

请注意这些方案如何不描述“如何”完成任何事情。像“我点击foo”这样的东西是一种气味,应该避免。

答案 2 :(得分:0)

如果我们在冒烟测试类型的情况下使用Gherkin,我们需要确保仅使用UI在数据库中存在某些内容吗?

quote

重复使用相同的Scenario: I need to create one (and only one) Box before I run the rest of my smoke tests Given I login as Admin When I am on the Box list Page Then the test passes if the Box named "QA SmokeTest" exists When I click the Add New Box Button And enter the details for a New Box And press Save New Box Then the test passes if the Box named "QA SmokeTest" exists 步骤两次基本上是一个if-else,以确保我的Box存在,以便我可以在需要Box的冒烟测试套件中运行我的其他测试。

但这取决于是否能够在测试运行中停止Scenario执行或执行无关的操作,例如:
Then
 然后在每个步骤中 ScenarioContext.Current["TestPassed"] = true;

答案 3 :(得分:-1)

您可以在要素文件中使用参数,并根据传递的参数在代码中实现If else。