RSPEC:是否可以在spec文件

时间:2015-07-27 23:01:02

标签: ruby selenium rspec selenium-webdriver

我知道最佳做法是让测试独立运行。

我正在使用Rspec运行Selenium Webdriver测试。如果我为每个特定测试用例创建和拆除用户组 - 其他模型,则测试运行时间会显着增加(大约30分钟)。

所以我将spec文件分成create _...,delete _...,并想在一个spec文件中调用这些spec文件。这是可能的,这是设置测试的好或坏方法吗?

类似的东西:

create_users_spec.rb
create_user_groups_spec.rb
create_dashboard_spec.rb
==> run some tests....
delete_dashboard_spec.rb
delete_user_groups_spec.rb
delete_users_spec.rb

run_all_spec.rb => run all of the spec files above, so you can see that 
                   it needs to run in a certain sequence

2 个答案:

答案 0 :(得分:1)

您真的希望能够独立运行测试。必须运行所有测试,甚至"只是"在我看来,给定文件中的所有测试都是开发过程中不可接受的延迟。它还使得很难使用Guard等基于文件监视器为您运行测试的工具。

如果之前确实需要运行某些内容,例如每个请求规范,您可以执行以下操作:

[Exception: Error occurred.  The error was Specified cast is not valid..]
   ***.DatabaseUtils.getData(OracleCommand oraCmd)
in d:\***\DatabaseUtils.cs:149
           ***.Transcripts.BindData(String orderByClause) 
in ***\Transcripts.aspx.cs:365
          ***.Transcripts.search_click(Object sender, EventArgs e) 
in ***\Transcripts.aspx.cs:81
           System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9628722
           System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
           System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
           System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
           System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
           System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724

但也要看你想要做什么。如果您只是为测试设置模型/数据库数据,那么您需要工具,或者更好的工厂。看看FactoryGirl。

答案 1 :(得分:0)

也许使用context组织您的测试并明智地使用before(:each)before(:all)可以提高性能。简化数据库,或使用像FactoryGirl这样的库也可以提供帮助。