2014-09-01 74 views
1

我有一些用C#编写的Selenium测试,它们正在被编译为一个使用nunit-console.exe从命令行运行的.dll文件。使用一个变量执行NUnit测试用例

这些测试是在我由一个现场测试环境做什么工作的罚款,但我需要为测试更通用...

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

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

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

在此先感谢。

+0

它是配置。所以一个配置文件。你说部署的返回值告诉你它在哪个端口上。因此,使用像PowerShell这样的脚本语言来读取配置文件并对其进行编辑。任务完成。 – Arran 2014-09-01 17:54:58

回答

3

您可以使用环境变量。

在你的Selenium测试你可以用

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

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

set SITE_PORT=<result of command>

+0

谢谢,我可以看到这个解决方案工作得最好。 – 2014-09-08 07:23:42

0

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