2014-01-27 31 views
1

我必须注销用户我已经开始使用Specflow,Selenium和PageObject模式进行测试。我想让场景互相独立,但是当我开始运行我的测试功能时,我发现我的用户在第一个场景之后不是匿名的。如果我使用Specflow和Selenium(BDD)

  • 什么时候应该注销测试用户?
    • 在每个场景之前?
    • 每个场景之后?
  • 在每种情况之后,specflow和硒滴状态可以吗?
  • 每次我必须拨打page.Logout()吗?

回答

4

我会说你应该注销,当它与测试案例相关时。假设你登录到SO并测试发布一个新问题,然后写一个答案并为每个答案添加两条评论。在每一步之间登录和退出将是一件很麻烦的事情,用户不会在现实世界中这样做。因此,只需在测试场景开始时登录,并在完成测试时注销。

另一个例子是将每个上述步骤作为不同的用户来完成,那么在每一步都需要登录/注销。

这也适用于更大的图片,如果您有多个场景需要登录用户,但不依赖于任何用户的信息,可能只需登录一次,然后再运行所有这些场景,然后注销。

Specflow和Selenium不保持状态,它是您正在测试的系统。例如,如果您的会话存储在Cookie中,则可以清除所述Cookie并实际将您注销。但是,这并不是测试系统,因为最终用户打算使用它,所以它只是偷工减料并测试系统的不同区域(未经身份验证的用户的授权),因此与真实世界的案例没有很好的关联。只需使用页面上的注销按钮/链接,因为您正在编写基于浏览器的测试。

+0

'功能:用户Dashboard' '因为我想看到仪表盘上的用户和我info' '方案:获取question' 名单'鉴于开放用户profile' '当我通过Reputation'点击 '变化我reputation' '方案。然后打开清单:获取question' 名单'鉴于开放用户profile' '当我通过questions' '然后单击打开列表我questions' 用户应登录适用于两种情况。我想在Given中登录我的用户。 现在我注销每个功能 '[AfterScenario]'' 公共无效ScenarioTearDown()'' 后{'' Pages.Logout.Invoke();'' }' 它是正确的吗? – GraDea

+0

这完全没问题,但如果你想减少登录数量,而且你的所有功能都不是用户特定的,那怎么样:'功能X''场景:登录''场景:做#1 '[...]'情景:做#2'情景:做#3'情景:注销'[...]?您系统的最终用户是否会注销并在声誉变更的开放列表和打开用户配置文件之间登录? – t0mppa

+0

应该情景是独立的吗? – GraDea

4
I think you should make your test feature wise or module wise. 
  • 如果你考虑在功能的所有进程,并根据流量,你只需要在年底退出

  • 如果您使模块成为明智之举,那么在完成一个过程后,您可以每次注销并重新登录到新模块。

相关问题