如何针对各种环境运行相同的specflow测试?

时间:2013-06-14 18:12:00

标签: selenium nunit specflow

我想编写一套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文件中放置这些类型的设置,但这也存在问题。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

例如使用PowerShell。