testing - 使用 Cucumber & Devise gems 测试登录用户时,我是否必须每次都登录?

标签 testing authentication devise cucumber bdd

我想写一个看起来像这样的场景:

Given I am logged in
And I am on my profile page
Then I see my name

对于“假设我已登录”——我是否需要编写如下内容:

  When I go to the log in page
  And I fill in "user_username" with "test" 
  And I fill in "user_password" with "invalid password"
  And I press "Sign in"

问题是:每次测试登录用户功能时,测试是否都必须经过登录场景?

编辑: 请注意,我使用的是 Devise gem。我不确定如何直接登录用户,因为必须设置用户 session 、cookie 等

最佳答案

我会编写一个步骤定义来处理登录而不是场景。

这个步骤定义之后就可以把cookies放到cookie jar里面供后续使用了。

如果您将 cookiejars 存储在以测试用户为键的散列映射中,那么该方法可以足够智能,仅在需要时登录,并在 session 仍然可用时重用 session 。这可以在测试中节省大量时间,但代价是没有完全独立的测试,因为现在它们通过服务器上的 session 数据耦合。在再次登录之前,始终可以通过注销来清除 session 。

关于testing - 使用 Cucumber & Devise gems 测试登录用户时,我是否必须每次都登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9768277/

相关文章:

validation - 验证Hadoop数据与EDW数据

c# - 代码应该进行单元测试还是集成测试

ubuntu - 登录 Ubuntu 时更改登录超时

java - 只允许登录用户访问私有(private)页面

ruby-on-rails - rails/设计 : pass param after sign_in

web-services - 使用 Powershell 对 Web 服务方法进行压力测试

android - 用于移动测试的 MonkeyTalkIDE 工具的替代品?

node.js - iOS & node.js : how to verify passed access token?

ruby - Facebook APP 多域

ruby-on-rails - 'authenticate_user!' 、 'user_signed_in?' 和 'if current_user' 之间有什么区别吗?