在cucumber中使用相同的浏览器窗口
在我的功能文件中,我有如下内容:在cucumber中使用相同的浏览器窗口,cucumber,capybara,capybara-webkit,Cucumber,Capybara,Capybara Webkit,在我的功能文件中,我有如下内容: Background: Given I am on login screen Then I log in Scenario: Given I am on a random account summary when I try feature-1 Then I see some output-1 Scenario: Given I am on account summary When I try feature-2 Then I see som
Background:
Given I am on login screen
Then I log in
Scenario:
Given I am on a random account summary
when I try feature-1
Then I see some output-1
Scenario:
Given I am on account summary
When I try feature-2
Then I see some message
Before do
AccessRandomAccountPage() #Assumes you're logged in already
end
当cucumber执行第二个场景时,它会重新执行后台
我的问题是-
是否可以告诉Cucumber使用与前一场景相同的浏览器会话/状态?
这将帮助我的测试节省一些执行时间。Capybara在每个场景之前重置会话,因此您应该在每个场景之前显式登录。但由于您并不是在每个场景中都测试登录,所以我建议您将此过程自动化 首先,您可以使您的背景更加去极化:
Background:
Given I'm logged in
看,这说明了为什么这样做更好
然后你可以:
get new_service_request_path, {}, 'HTTP_COOKIE' => 'name=value'
在您的功能文件中,您使用的是后台:,它针对所有场景执行,为了避免每次调用(),请将后台:更改为场景:并告诉Cucumber使用与前一场景相同的浏览器会话即可
Scenario:
Given I am on login screen
Then I log in
Scenario:
Given I am on a random account summary
when I try feature-1
Then I see some output-1
Scenario:
Given I am on account summary
When I try feature-2
Then I see some message
我认为你有很多选择使用前后挂钩,以及标签。我从这里开始读: 大概是这样的:
Background:
Given I am on login screen
Then I log in
Scenario:
Given I am on a random account summary
when I try feature-1
Then I see some output-1
Scenario:
Given I am on account summary
When I try feature-2
Then I see some message
Before do
AccessRandomAccountPage() #Assumes you're logged in already
end
或者,如果这是特定于一组测试的,如“AlreadyLoggedIn”测试,则可以使用标记:
Before ('@AlreadyLoggedIn') do
AccessRandomAccountPage()
end
是否确实要让测试共享状态?您是否知道可能会导致其中一个问题的任何次要(可能没有失败)问题破坏所有其他问题的结果?一般来说,你所要求的是一件非常糟糕的事情。你的观点是正确的,在任何正常情况下,我都会尽量避免这些。但我的问题是,要测试任何功能,我需要登录并访问一个随机帐户摘要页面。所以,我想知道我是否可以只做一次,至少避免登录过程。谢谢你的回复。如果我遇到任何问题,我会尝试并再次发表评论。水豚会在每个场景之前重置会话,所以这种方式不起作用
Before ('@AlreadyLoggedIn') do
AccessRandomAccountPage()
end