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

C# 使用一个变量执行NUnit测试用例,c#,selenium,deployment,build,nunit,C#,Selenium,Deployment,Build,Nunit,我有许多用C#编写的Selenium测试,它们被编译成一个.dll,使用nunit-console.exe从命令行运行 这些测试目前在我的测试环境(由一个站点组成)中运行良好,但我需要使测试更加通用 这些测试背后的想法是,它们将在部署软件后使用。正在部署的软件将在IIS中设置一个站点,该站点将绑定到一个端口,该端口将根据当时可用的端口自动分配。我需要让我的测试知道网站将在哪个端口上运行,否则它可能会测试错误的站点。通过使用我正在使用的部署工具的返回值,我能够识别它正在运行的端口 因此,我的问题是

我有许多用C#编写的Selenium测试,它们被编译成一个.dll,使用nunit-console.exe从命令行运行

这些测试目前在我的测试环境(由一个站点组成)中运行良好,但我需要使测试更加通用

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

因此,我的问题是:是否可以将一个参数(例如网站端口号)传递给nunit控制台,供我已经编译好的Selenium测试使用

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


提前感谢。

您可以使用环境变量

在硒测试中,您可以使用

var-port=System.Environment.GetEnvironmentVariable(“SITE_-port”)

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


set SITE\u PORT=

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

这是配置。因此需要一个配置文件。您说部署的返回值告诉您它在哪个端口上。因此,请使用脚本语言,如PowerShell,然后读取配置文件并对其进行编辑。工作完成了。