2013-06-25 52 views
1

我想从命令行运行我的specflow测试场景,我想知道是否可以将任何命令行参数传递给我的specflow场景。如何将命令行参数传递给specflow测试场景

我的情况是这样的:
场景:测试连接到我的服务器
鉴于获取服务器ip地址
当我按下连接
那么我应该可以连接

,当我说“获取服务器ip地址”那么我可以读取命令行参数。可能吗??

或者任何人有任何其他的解决方案或建议。先谢谢你。

回答

0

我会使用.net配置系统 - 将您的服务器连接字符串放入connectionstrings设置元素中(或者如果您有宗教异议将非数据库放在那里,请使用appsettings)并从您的设置中读取。如果您希望针对不同的环境使用不同的配置文件,请使用配置转换来创建不同的配置。这将允许你保留项目中的所有内容,而不必依赖为应用程序设置环境变量。您可以使用command line transform execution tool脚本创建转换后的配置文件。

我已经做了类似的使用配置文件与我的规格击中网页切换哪个驱动程序我用于硒webdriver和结束只是复制我的规格程序集多次不同的配置文件,所以我可以从不同的配置文件运行目录执行不同的浏览器。你可以做类似的事情来连接不同的机器,或者只是吐出不同的配置文件,并将它们交换到执行目录中(或者当你想执行不同的操作时手动更改配置)。

你还应该得到这样的义务:“该场景不是真的是bdd场景,应该是更多关于业务能力的故事,而不是你在那里使用bdd工具的技术场景,比如specflow预期的方式”语句因为这是一个完整的答案。

0

Specflow不提供任何机制来执行此操作。

虽然我明白了为什么你会认为你想这样做,但要小心考虑将你的测试链接到外部依赖项(如你要连接的服务)上会发生什么。虽然你会为自己制定一套测试自动化的方法,但他们失败的原因有很多。例如,服务器没有运行,配置不是虚拟的,甚至不同版本的客户端和服务器。

个人情况下,我想测试进程间通信的完全回归,我在测试中托管了客户端和服务器,以便我可以更轻松地控制它们启动和停止两个部分。即便如此,与切断通信栈的测试相比,这些测试非常脆弱,偶尔也会失败。

但是,如果你真的想继续

所有正在运行的代码继承了在所有脑干在命令启动时的环境变量的副本。在启动SpecFlow之前,您可以使用set Name=value来设置它们,并在您的Given方法中使用Environment.GetVariable(variableName)进行设置。

+0

我非常感谢您的建议。我非常新的这个specflow工具,所以即时通讯只是想做到这一点。 – Ashishkumar

相关问题