将命令行上的变量传递给Cucumber测试

时间:2014-04-03 18:08:59

标签: ruby cucumber owasp

我正在尝试将黄瓜项目的用户名和密码保留在版本控制之外。

有没有办法在命令行上手动传递变量,如用户名和密码到黄瓜脚本?

我的备份计划是将它们放在YML文件中并将该文件添加到gitignore中,这样它们就不会被置于版本控制之中。

2 个答案:

答案 0 :(得分:11)

所以,我看到你对Tin Man的评论,答案是肯定的。

cucumber PASSWORD=my_password

PASSWORD被设置为环境变量,您可以通过将其引用为ENV['PASSWORD']来使用其值。例如,browser.text_field(:id => 'pwd').set ENV['PASSWORD']

另一种方式是间接的。 我过去做的是通过个人资料名称,该个人资料将做我想要的事情。因此,例如,我有一个配置文件名称firefox和一个fireps配置文件在cucumber.yml有一个名为BROWSER_TYPE的变量,其值分配给firefox。此变量(BROWSER_TYPE)由我打开浏览器的方法使用。如果它的值是firefox,则此方法打开firefox浏览器。

所以,我在这里做的是 -

  1. 传递个人资料。个人资料的名称为firefox
  2. firefox配置文件在cucumber.yml中定义。您可以使用配置文件进行任何操作,但在本例中,我定义了一个名为BROWSER_TYPE的变量,并将其值指定为firefox。
  3. 然后我有一个使用BROWSER_TYPE变量并使用其值打开浏览器的方法。
  4. 这些步骤的代码 -

    1. cucumber -p firefox
    2. 我的cucumber.yml文件看起来像 firefox: BROWSER_TYPE=firefox PLATFORM=beta

    3. 我打开浏览器的方法与 -

      类似

      @browser = Watir::Browser.new ENV['BROWSER_TYPE']

    4. 因此,理想情况下,您可以创建一个使用密码设置环境变量的配置文件,并将该配置文件名称传递给黄瓜。

答案 1 :(得分:0)

两个想法:

1)我也有同样的担忧,我创建了一些shell脚本(Mac和Unix),它们将凭证存储在一个用机器专用密码加密的目录中。然后,我可以使用"鉴于名为blah"在我的Cucumber场景中,然后在我的步骤定义中使用@username = testcred get #{credname} username @username = testcred get #{credname} password来完成这项工作,我的凭据绝不会在任何地方错误地进入回购。请参阅https://github.com/usethedata/credstore.git了解我将其放入github(早期工作)的位置

2)Lastpass有一个可用的命令行版本。我还使用LastPass帐户分享我的测试凭据,该帐户仅用于测试凭据。我使用上面的信任存储来存储该帐户的lastpass主密码(永远不会是我真正的主密码),然后使用lastpass命令行来获取用户名和密码。这样做的好处是,当我更改Lastpass中的凭据时,它们会自动在他们使用的任何地方更新