1

我想编写一套 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 文件中,但这也有它的问题。

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

4

2 回答 2

0

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

如果这仍然不是您需要的,配置文件的替代方法是设置可以在运行时读取的环境变量,请参阅如何将命令行参数传递给 specflow 测试场景

于 2013-07-01T08:57:36.317 回答
0

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

例如使用 PowerShell。

于 2013-07-01T10:43:43.513 回答