Ruby on rails 如何在cucumber场景中跳过登录以加快测试速度?
我有一个rails应用程序,我正在尝试让cucumber/capybara/selenium webdriver测试更快。我的大多数场景如下所示:Ruby on rails 如何在cucumber场景中跳过登录以加快测试速度?,ruby-on-rails,cucumber,capybara,selenium-webdriver,Ruby On Rails,Cucumber,Capybara,Selenium Webdriver,我有一个rails应用程序,我正在尝试让cucumber/capybara/selenium webdriver测试更快。我的大多数场景如下所示: @javascript Feature: Writing reports In order ..... Background: Given I am logged in Scenario: Scenario 1 ........... Scenario: Scenario 2 ........... 大部分时
@javascript
Feature: Writing reports
In order .....
Background:
Given I am logged in
Scenario: Scenario 1
...........
Scenario: Scenario 2
...........
大部分时间都花在“给定我已登录”上,在这里我转到注册页面创建用户并登录。身份验证是使用designe实现的
如何使我不必在测试环境中登录?
是否有其他最佳实践可以绕过繁琐的登录步骤?(并且仅在专门测试登录/注册的场景中保持登录)你的cucumber场景就是你的生活和呼吸文档。如果你需要登录才能使用应用程序的这一部分,那么你的cucumber步骤应该明确说明这一点 至于你在水豚岛的引擎盖下叫什么。您可以查看Desive会话控制器,并在集成测试中直接使用相同的方法调用。然而,如果Desive更改了它的实现,您的集成测试将失败在可能的情况下,您的集成测试不应涉及任何底层实现细节。 最容易维护的代码,也是最可靠的测试,将是按照用户的意愿填写表单。如果您使用的是Warden(该设备运行),可能会签出 作者提出了一种使用典狱长助手代替填写表格的方法。基本上是用纯Ruby登录,而不是通过浏览器。对于专门测试登录/注销功能的场景,您仍然可以测试各个字段中的填充,但这可能会加快其他情况的速度
User.create代码>作为给定步骤的一部分。并且只能通过web UI登录
@javascript
。通过这种方式,您可以使用designe test helper登录
,而不是通过web UI在您的场景中有很多UI细节。这使得您很难理解您真正要验证的行为 场景名称给出了一些提示,但是给定的/When/Then中的具体示例包含了很多细节,这些细节混淆了目的
Scenario: Login with invalid username/password
Given I am signed out
When I log in with invalid user credentials
Then should I get an error message
Scenario: Login with valid username/password and valid PIN
Given I am signed out
When I log in with valid credentials
then should I be greeted
这两个示例不包含有关链接或pin表单的任何详细信息。我将这些视为我将在堆栈中向下推的实现细节。我会将它们推送到步骤正在使用的helper类。您似乎正在验证一个web应用程序,我会让这些细节存在于支持这些步骤的页面对象中
<>我也会考虑删除个人PrimoM<代码> i>代码>,然后改为角色。系统用户的典型角色。角色有一个名字。假设我们创建了一个名为“安”的角色,她是一名35岁的女性,在行政部门工作。这将使我有机会将场景改写为
Scenario: Login with invalid username/password
Given Ann am signed out
When Ann log in with invalid user credentials
Then will she receive an error message
Scenario: Login with valid username/password and valid PIN
Given Ann am signed out
When Ann log in with valid credentials
then should Ann be greeted
这给了我们一些背景,我们知道安是谁。我们可以将她的用户名和密码保存在我们的支持类中,并期望实现能够正确使用它们。您的config/initializer/designe.rb是否已经有了
config.streams=Rails.env.test?1:10
?谢谢。是的。由于似乎没有人对登录步骤有问题,我分析了应用程序,发现了一个问题。现在快多了。但我仍然想知道是否真的没有办法绕过登录?不,在像Capybara和Cucumber这样的全堆栈测试中没有。