我现在使用Cucumber来描述功能测试。由于我们的应用程序是一个Web应用程序,因此在每个测试用例的开头都会有强制登录步骤。 我现在可以在每个.feature文件中添加一个带有方案的测试用例:
Scenario: Login user
Given Open Chrome and start application
When I enter valid username and password
Then User shall be logged in successful
但我更喜欢没有这样做的解决方案,并且在处理完第一个.feature文件后继续使用会话。 这可能吗?如果是,怎么样?
答案 0 :(得分:2)
你有几个选择来实现这一目标。一种是在每个要素文件中使用“背景”部分来复制那些确切的步骤。您可以在步骤定义中引入额外的验证,例如检查Chrome是否正在运行,然后再次启动,等等。使用此方法的警告是仍然必须对每个功能和背景执行登录操作需要在每个要素文件中包含该部分。
Feature: Feature 1
Background: User is Logged In
Given Open Chrome and start application
When I enter valid username and password
Then User shall be logged in successful
Scenario: Scenario 1 in Feature 1
...
Scenario: Scenario 2 in Feature 1
...
另一种选择是标记需要用户登录的场景(例如@requiresUserLoggedIn)并检查Before Hook上是否存在该标记,然后在不是这种情况下触发登录过程。这是我要遵循的方法。
@requiresUserLoggedIn
Scenario: Scenario 1 (requires user to be logged in)
...
Scenario: Scenario 2 (does NOT require user to be logged in)
...
@Before
public void setUp(Scenario scenario) {
if(scenario.getSourceTagNames().contains("requiresUserLoggedIn)) {
// Check if the User is Logged In and Trigger Login Process if that is not the case
}
}