使用一个变量执行NUnit测试用例

时间:2014-09-01 14:53:55

标签: c# selenium deployment build nunit

我有许多用C#编写的Selenium测试正在编译为.dll,它是使用nunit-console.exe从命令行运行的。

这些测试目前在我的测试环境中正常工作,包括一个站点,但我需要测试更通用...

这些测试背后的想法是,它们将在部署一个软件之后使用。正在部署的软件将在IIS中设置一个站点,该站点将绑定到一个端口,该端口将根据当时可用的内容自动分配。我需要测试才能知道网站将运行哪个端口,否则可能会测试错误的网站。我可以使用我正在使用的部署工具的返回值来识别它正在运行的端口。

因此我的问题是:是否可以将参数(例如网站端口号)传递给我已编译的Selenium测试可以使用的nunit-console?

我能想到的唯一其他解决方案是在部署后构建测试。我想避免这种情况,因为软件已经经历了构建阶段,并且再次构建对我来说似乎很麻烦,特别是如果我们的构建服务器(Bamboo)由于它是部署任务中的某些自定义脚本而失去对构建过程的可见性。

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以使用环境变量。

在您的硒测试中,您可以阅读

var port = System.Environment.GetEnvironmentVariable("SITE_PORT");

您可以从不同的来源设置它,例如批处理脚本或提示符:

set SITE_PORT=<result of command>

答案 1 :(得分:0)

AFAIK在当前版本的NUnit中无法做到这一点。在您的情况下可能的解决方案之一可以使用配置文件(我有时使用)。如果您知道测试运行的端口,您可以将该信息保存到配置文件中并从中获取数据(使用ConfigurationManager):url或者您需要它们。你没有花太多时间来改变你的测试(你几乎不需要这样做,只需添加从配置文件中获取url的方法并将其粘贴到正确的位置=)。)