2014-03-07 40 views
1

所以,我想为几个网站编写单独的测试,但是使用单个框架来完成。我想以一种特定于特定站点的代码与整体框架代码无关的方式来构建我的Cucumber框架。如何构建在多个网站上运行的Cucumber框架?

目前,我有以下结构:

- features 
    - site1_feature.feature 
    - site2_feature.feature 
    - step_definitions 
    - site1.rb 
    - site2.rb 
    - support 
    - config 
     - site1_domain.yaml 
     - site2_domain.yaml 
    - pages 
     - page_object.rb 
     - site1_homepage.rb 
     - site2_homepage.rb 
    - env.rb 
    - world_ext.rb 

所以现在我的问题是这样的:

我可以移动site1_feature.feature和site1.rb到它自己的文件夹,并调用该文件夹上的黄瓜。这很好,除了,支持文件夹下的一切都属于不同网站的东西:

  • site1_domain.yaml文件夹中应该去与site1的功能和 SDS

  • page_object.rb是“抽象”类,我作为一个超使用 使PageObjects,如site1_homepage.rb的代码,我想 打包所有的site1的功能等

  • env.rb较为一般设置代码我不想连接到 任何一堆测试。

但黄瓜需要在功能目录支持目录的存在,所以我看不出怎么弄的总框架的东西:

  • page_object.rb
  • env.rb
  • world_ext.rb

从位点特异性测试代码独立。任何指针?

回答

2

你可以将通用框架文件提取到它自己的文件夹中,比如说“common”。然后,对于每个网站,您只需要这些常用框架文件即可。

例如,你可以组织你的共同的框架和现场特定的文件夹为:

- common 
    - common.rb 
    - support 
    - pages 
     - page_object.rb 
    - env.rb 
    - world_ext.rb 
- site1 
    - features 
    - site1_feature.feature  
    - step_definitions 
     - site1.rb  
    - support 
     - config 
     - site1_domain.yaml 
     - pages 
     - site1_homepage.rb  
     - env.rb 
- site2 
    - features 
    - site2_feature.feature  
    - step_definitions 
     - site2.rb  
    - support 
     - config 
     - site2_domain.yaml 
     - pages 
     - site2_homepage.rb  
     - env.rb  

共同\ common.rb将要求所有的共同框架文件:

require 'support\pages\page_object' 
require 'support\env' 
require 'support\world_ext' 

的SITE1 \ env.rb(和site2)需要common.rb才能获得所有常用框架文件:

require_relative '../../../common/common'