如何重用会话或步骤?
How to reuse sessions or steps?
我现在使用 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 文件后继续安静地进行会话。
这可能吗?如果是,怎么办?
您有几个选择可以实现这一目标。一种是在每个功能文件中使用 "Background" 部分来复制那些确切的步骤。您可以在步骤定义上引入额外的验证,例如检查 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
}
}
我现在使用 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 文件后继续安静地进行会话。 这可能吗?如果是,怎么办?
您有几个选择可以实现这一目标。一种是在每个功能文件中使用 "Background" 部分来复制那些确切的步骤。您可以在步骤定义上引入额外的验证,例如检查 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
}
}