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

后端 未结 4 1042
暖寄归人
暖寄归人 2021-01-18 21:32

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 pag         


        
相关标签:
4条回答
  • 2021-01-18 22:17

    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.

    0 讨论(0)
  • 2021-01-18 22:24

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

    0 讨论(0)
  • 2021-01-18 22:31

    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;

    0 讨论(0)
  • 2021-01-18 22:33

    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
    
    0 讨论(0)
提交回复
热议问题