1

我已经开始使用 Specflow、Selenium 和 PageObject 模式进行测试。我想让场景彼此独立,但是当我开始运行我的测试功能时,我发现我的用户在第一个场景之后不是匿名的。

  • 我应该什么时候注销测试用户?
    • 在每个场景之前?
    • 在每个场景之后?
  • 在每个场景之后,specflow 和 selenium 会下降状态吗?
  • page.Logout()我必须每次都打电话吗?
4

2 回答 2

4

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

另一个例子是以不同用户的身份执行上述每个步骤,那么在每个步骤都需要登录/注销。

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

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

于 2014-01-27T10:22:13.110 回答
4
I think you should make your test feature wise or module wise.
  • 如果您考虑一个功能中的所有流程并根据流程,您最终只需要注销。

  • 如果您明智地使用模块,则在一个过程之后您可以每次注销并在新模块中再次登录。

于 2014-01-27T13:32:23.680 回答