如何构建在多个站点上运行的Cucumber框架?

时间:2014-03-07 17:14:31

标签: 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是我想要不连接的更通用的设置代码 任何一组测试。

但是Cucumber需要在features目录中存在一个支持目录,所以我看不出如何获得一般框架的东西:

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

从特定于站点的测试代码中分离出来。有什么指针吗?

1 个答案:

答案 0 :(得分: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 \ common.rb需要所有常见的框架文件:

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

site1 \ env.rb(和site2)需要使用common.rb来获取所有常见的框架文件:

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