无论如何我们可以在功能文件中使用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
答案 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。