Does if else concept available in feature file (Gherkin language)?

核能气质少年 提交于 2019-12-19 19:53:18

问题


Is there anyway where we can use if/else concept in feature file? For example:

  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 

回答1:


Not that I am aware of. Gherkin (and cucumber) are best used when they specify discreet business cases though, and should be repeatable, else they get hard to follow and test. It looks like you have two stories here at least:

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



回答2:


No you can't and you shouldn't. Feature files are for business behaviour, not programming.

From your scenario I think you are trying to deal with different behaviour, depending on whether you are registered or not. To do this you would write two scenarios

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

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

Notice how these scenarios don't describe 'how' anything is done. Anything like `I click on foo' in feature is a smell and should be avoided.




回答3:


What about if we are using Gherkin in a smoke test type situation and we need to ensure something exists in the database using only the UI?

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

The re-use of the same Then step twice is essentially an if-else that will make sure my Box exists so that I can run my other tests in the smoke test suite that require a Box.

But that is dependent on being able to stop the Scenario execution in the test runner or doing something extraneous like:
ScenarioContext.Current["TestPassed"] = true;
and then in each of the steps
if(ScenarioContext.Current.Get<bool>("TestPassed")) return;




回答4:


You can use parameter in feature file and implement the If else in the Code based on the parameter passed.



来源:https://stackoverflow.com/questions/30233391/does-if-else-concept-available-in-feature-file-gherkin-language

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!