【问题标题】:Behat "base_url" from command line来自命令行的 Behat“base_url”
【发布时间】:2015-05-17 23:54:42
【问题描述】:

我想知道是否可以通过命令行设置 base_url。示例

bin/behat --base_url=http://google.fr

为了灵活性,我想避免每次我必须测试一个新的 url 时都创建一个新的配置文件并通过命令行传递它。

这里有什么诀窍吗?

谢谢。

【问题讨论】:

  • 这有点令人费解,为什么您不介意在命令行上传递 base_url,但传递配置文件(字符较少)却不行。 :)
  • aderuwe,我和原始发帖人有同样的问题,因为我们随意启动新服务器来测试分支。每个实例的 URL 都不同。将这些 url 存储在 behat.yml 中并不理想。
  • 完全忘记验证答案。 @bitlather 你可以使用我的解决方案

标签: behat mink


【解决方案1】:

我自己找到了解决办法。

只需在 BEHAT_PARAM 环境变量中传递 base_url。

export BEHAT_PARAMS="context[parameters][base_url]=http://google.fr"

然后运行behat

bin/behat

【讨论】:

  • 至少不适用于 Behat 3.2 并以 ConfigurationLoadingException: Environment variable BEHAT_PARAMS 结尾
【解决方案2】:

或者,如果您使用 Mink,您可以在 behat.yml 中定义配置文件

# behat.yml
default:
    extensions:
        Behat\MinkExtension\Extension:
            base_url: http://local.mysite.com
            goutte: ~
            selenium2: ~

dev:
    extensions:
        Behat\MinkExtension\Extension:
            base_url: http://dev.mysite.com

然后您可以默认使用以下命令对 local.mysite.com 运行测试

$ behat

或反对 dev.mysite.com 与

$ behat --profile=dev

【讨论】:

    【解决方案3】:

    在 Behat 3 中,这个参数好像变成了 JSON,所以它的工作方式是这样的:

    export BEHAT_PARAMS='{"extensions":{"Behat\\MinkExtension":{"base_url":"https://google.com/"}}}'
    

    重要这些参数不是覆盖,它们是默认值,并被behat.yml 覆盖。 因此,您必须取消设置 behat.yml 中的 base_url 才能使此 CLI 设置生效。

    extensions:
      Behat\MinkExtension:
        # YOU MUST EDIT THIS YOURSELF!
        # Either set this here, or set the base_url via BEHAT_PARAMS
        # base_url: 'https://my.livesite.com/'
    

    (参考:feature-requestclue

    【讨论】:

      【解决方案4】:

      实现与your answer 相同的更短的方法是在命令本身之前传递环境变量:

      BEHAT_PARAMS="context[parameters][base_url]=http://google.fr" bin/behat
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-02
        • 2013-05-30
        • 2017-08-10
        • 1970-01-01
        相关资源
        最近更新 更多