将命令行上的变量传递给Cucumber测试
我试图保持黄瓜项目的用户名和密码不受版本控制。
有没有办法在命令行上手动传递变量,如用户名和密码到黄瓜脚本?
我的备份计划是将它们放在YML文件中并将该文件添加到gitignore,这样它们就不会置于版本控制之下。
所以,我看到你对Tin Man的评论,答案是肯定的。
cucumber PASSWORD=my_password
PASSWORD被设置为环境变量,您可以通过将其称为ENV['PASSWORD']
来使用其值。 例如, browser.text_field(:id => 'pwd').set ENV['PASSWORD']
另一种方式是间接的。 我过去做的是通过个人资料名称,该个人资料将做我想要的事情。 因此,例如,我有一个配置文件名称为firefox
,一个firefox配置文件在cucumber.yml中有一个名为BROWSER_TYPE
的变量,其值分配给firefox。 此变量( BROWSER_TYPE
)由我打开浏览器的方法使用。 如果它的值是firefox,则此方法打开firefox浏览器。
那么,我在这里做的是 –
- 传递个人资料。 配置文件的名称是
firefox
- firefox配置文件在cucumber.yml中定义。 您可以使用配置文件进行任何操作,但在本例中,我定义了一个名为
BROWSER_TYPE
的变量,并将其值指定为firefox。 - 然后我有一个使用
BROWSER_TYPE
变量并使用其值打开浏览器的方法。
这些步骤的代码 –
-
cucumber -p firefox
-
我的cucumber.yml文件看起来像
firefox: BROWSER_TYPE=firefox PLATFORM=beta
-
我打开浏览器的方法看起来类似于 –
@browser = Watir::Browser.new ENV['BROWSER_TYPE']
因此,理想情况下,您可以创建一个使用密码设置环境变量的配置文件,并将该配置文件名称传递给黄瓜。
两个想法:
1)我有同样的担忧,我创建了一些shell脚本(Mac和Unix),它们将凭证存储在一个用机器专用密码加密的目录中。 然后我可以在我的Cucumber场景中使用“给出名为blah的凭据”然后在我的步骤定义中使用@username = testcred get #{credname} username
@username = testcred get #{credname} password
来使这项工作没有机会我的凭据永远都是他们错误地进入回购的地方。 请参阅https://github.com/usethedata/credstore.git,了解我将其放入github的地方(早期工作)
2)Lastpass有一个可用的命令行版本。 我还玩过使用LastPass帐户共享我的测试凭据,该帐户仅用于测试凭据。 我已经使用上面的credstore存储该帐户的lastpass主密码(从来没有我的真实主密码),然后使用lastpass命令行来获取用户名和密码。 这样做的好处是,当我更改Lastpass中的凭据时,它们会在使用它们的任何地方自动更新