【问题标题】:How to run same specflow tests against various environments?如何针对各种环境运行相同的规范流测试?
【发布时间】:2013-07-01 18:43:43
【问题描述】:

我想编写一套 SpecFlow 测试,在各种环境中测试我的 Web 应用程序(使用 Selenium)。

所以我有一个这样写的测试

Given that I am on the login page

这反过来导致一个步骤定义归结为

driver.Navigate().GoToUrl("http://www.myapp.com/login.aspx");

但是,我希望我的测试也能够针对 "http://localhost" 或 `"http://test.myapp.com" 运行,而无需重新编译。我想出的最好办法是将这些类型的设置放在 App.config 文件中,但这也有问题。

有没有人对如何最好地实现这一目标提出建议?基本上我想在运行时为我的测试传递环境设置。

【问题讨论】:

  • 您是在寻找用户在他们运行测试时指定,还是从外部运行器中指定某种参数?
  • 我想从外部运行器传入参数。基本上是“针对我的本地环境执行这些测试”或“针对测试/QA 环境执行这些测试”。理想情况下,测试将自动运行,以针对每个新构建的部署运行。

标签: selenium nunit specflow


【解决方案1】:

您可以通过使用转换在构建过程中更改配置文件来做到这一点,并且有一些工具可以让您在构建过程之外运行转换(因此您不必手动更改它并避免构建)使用命令行。这已经在SO上讨论过: Web.Config transforms outside of Microsoft MSBuild?

例如使用 PowerShell。

【讨论】:

    【解决方案2】:

    我仍然会质疑您是否会更好并启动您希望测试的服务的本地实例,而不是连接到测试明确控制之外的东西。您可以改为使用类似于self hosting a web apihost a wcf service 的方法为您执行此操作。通过这种方式,您可以注入模拟、修改和重置数据库,或执行您想要的任何其他操作。

    如果这仍然不是您所需要的,配置文件的替代方法是设置可以在运行时读取的环境变量,请参阅How to pass Command line argument to specflow test scenario

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多