2014-03-07 80 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'