运行 来自命令行的黄瓜功能,适用于不同的测试环境

Run cucumber features from command line with for different test environments

我是 Cucumber 和 Ruby 的新手。我有一个黄瓜功能,运行从命令行对此进行了设置。我在我的步骤定义 .rb 文件中提供了我的 QA 测试环境连接详细信息。当我 运行 它在 QA 中时,我没有问题,它总是指向 QA。但是如果我想在 Dev 或 PT 中 运行,我必须去更改 .rb 步骤定义文件中的连接 URL。是否有 运行 功能文件的选项,只需在命令行中指定测试区域,如下所示...

C:> Cucumber 功能 [开发或 QA 或 IT]

您可以将以下代码放入features/support/env.rb:

case ENV['MY_ENV']
when 'Dev' then # initialize Dev
when 'QA' then # initialize QA
else ...
end

和运行它喜欢:

MY_ENV=Dev cucumber

我使用 hashie+yml 来管理我的配置文件,这不仅需要能够根据我遇到的环境给我不同的 url,而且还需要基于我打算 运行 测试的应用程序。 .. 下面是一个例子:

首先你需要一个 yaml 文件,你可以在其中添加你的配置信息,你可以将其命名为 "config.yml" 例如:

---
test:
  url: http://test.com
dev: 
  url: http://dev.com

然后是一个负责暴露你的yaml文件的模块,你可以这样称呼它"config.rb"例如:

module Config
  #this line creates a constant with the environment variable value
  ENV_CONFIG = ENV['ENV_CONFIG'] || 'test'

  #this method loads your yaml with hashie
  def load_file(file_name)
    Hashie::Mash.load(Dir.pwd + '/lib/config/' + file_name + '.yml')
  end

  #this is the method that you will use to read your yaml based on 
  #your ENV_CONFIG value
  def env_config
    config ||= load_file('config').send("#{ENV_CONFIG}")
  end
end

然后在你的 env.rb 中需要 config.rb 文件,然后包含 "Config" 模块...一旦你这样做了,你就可以根据 ENV_CONFIG 您在命令行中设置的环境变量...

您可以运行通过以下方式访问 yaml 信息:

env_config.url
> "http://test.com" #if your ENV_CONFIG is "test"

当你触发 Cucumber 时,运行 它通过赋予环境变量(如果你不这样做,代码将默认为测试)

cucumber ENV_CONFIG='dev'