【问题标题】:Run cucumber features from command line with for different test environments从命令行运行黄瓜功能,用于不同的测试环境
【发布时间】:2015-09-08 03:25:26
【问题描述】:

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

C:> Cucumber 特性 [Dev or QA or IT]

【问题讨论】:

    标签: ruby cucumber


    【解决方案1】:

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

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

    然后像这样运行它:

    MY_ENV=Dev cucumber
    

    【讨论】:

    • 嗨。感谢您的答复。我已经按照您的建议做了同样的事情,并且工作正常,我还有一个问题。如何在执行期间退出或终止黄瓜功能执行。例如,在 env.rb 文件中,我有我的“案例”来从命令行选择环境。如果 ENV[''] 没有来自命令行的正确区域,那么在 else 语句中我输入“区域未找到”并且我想终止执行流程。我尝试了 exit(0)、return、raise() ......但不工作..你能帮我如何在运行时终止执行吗?
    • 我试过这样 exit()。但是我在命令提示符中得到了这个输出。这是正确的吗?。未指定运行无效选项的区域:-t minitest 选项:-h, --help 显示此帮助。 -s, --seed SEED 设置随机种子。也通过环境。例如:SEED=n rake -v、--verbose 详细。显示进度处理文件。 -n, --name PATTERN 过滤器在 /pattern/ 或字符串上运行。已知扩展:pride -p、--pride Pride。展示您的测试自豪感!
    • 它看起来像 whatever --help 的输出,并且可能取决于其他环境/捆绑设置。
    • 非常感谢@mudasobwa。我的命令行执行工作正常。但面临另一个问题。当使用 TEST_ENV=Dev 给出的命令行启动时,所有功能都运行良好。但是当我打开 ruby​​mine 并运行各个功能时,它会询问我 TEST_ENV 的输入。所以我对此不确定。是否有任何选项可以检查该功能是否通过命令行启动。这样我就可以相应地导航。?
    • 我对Redmine一无所知,抱歉。
    【解决方案2】:

    我使用 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 文件中,然后包含“配置”模块...一旦您这样做了,您将根据您在命令中设置的 ENV_CONFIG 环境变量设置使用 yaml 中存在的信息线...

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

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

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

    cucumber ENV_CONFIG='dev'
    

    【讨论】:

      猜你喜欢
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 2011-03-04
      • 2020-09-04
      相关资源
      最近更新 更多