如何使用behave设置环境变量(Python BDD框架)?

2 投票
2 回答
7522 浏览
提问于 2025-04-20 22:53

我们的测试环境会根据我们正在进行的版本动态变化。

举个例子:

  • 比如说,对于abc版本,测试环境的URL会是feature-abc.mycompany.com;而对于xyz版本,测试环境的URL则是feature-xyz.company.com,依此类推。
  • 同样的情况也适用于预发布环境:release-abc.mycompany.com、release-xyz.mycompany.com等等。
  • 而生产环境的URL是固定的:platform.mycompany.com。

所以,我需要指定我希望在哪个URL上运行我的测试,使用的是Python的behave BDD框架。

具体来说,我想要实现的功能是类似于Ruby中的cucumber,使用features/support/env.rb文件来定义多个URL(比如qa、staging、production等),这样在命令行(终端)中我只需要输入xyz(其中qa = feature(这个版本).mycompany.com)。

类似于这个问题:如何在Cucumber中测试不同的环境(例如开发|测试|生产)?

2 个回答

1

behave-1.2.5 版本引入了一个叫做 userdata 的概念。

behave -D BUILD_STAGE=develop …

before_all() 这个钩子里加载对应阶段的配置。

1

好的,关于这个问题,有一个拉取请求(PR #243),可以在behave的GitHub仓库中实现这个功能。

与此同时,他们建议我使用 os.getenv('variable_name', 'default_value') 作为临时解决办法,然后在命令行中我只需要输入 export variable_name='another_value' ; behave

想了解更多详细信息,可以查看我们的简短讨论:

https://github.com/behave/behave/issues/250

撰写回答