>我有一套用VS 2017开发的硒测试,Nunit(项目类型 - 使用.net框架452的类库。在我的 OneTimeSet Up 中,我正在阅读 app.config,它定义了很少的东西,例如 Web URL、数据库连接字符串、Web 登录用户 ID/密码等。
例:
<appSettings>
<add key="Browser" value="IExplorer" />
<add key="User" value="xxx" />
<add key="Password" value="xxx" />
<add key="BaseURL" value="http://ccc.com" />
<add key="DefaultImplicitDriverWait" value="15" />
<add key="TestRailIntegrationValue" value="False" />
<add key="GenerateCustomReport" value="False" />
</appSettings>
<connectionStrings>
<add name="DB1" connectionString="Data Source=db_name;Initial Catalog=db_instance;User Id=userid;Password=pwd;" />
</connectionStrings>
然后要运行测试,我使用 nunit 命令行 -- 示例
cd "C:path-to-repo location"
packagesNUnit.ConsoleRunner.3.7.0toolsnunit3-console pathToDll --where "cat == Demo"
cmd /k
现在,只要我针对一个环境,就可以正常工作。现在,当我需要将测试切换到不同的环境时,在从命令行或VS 2017运行测试之前,我需要更改指向不同env变量的app.config
。
那么有没有办法,我可以在命令行中将这些值作为参数传递,然后在执行任何测试之前更新app.config
?
如果有任何替代解决方案/建议,我很高兴得到所有建议。
> NUnit 不会以任何方式使用或修改您的配置文件。它所做的只是确保它可用于测试。
此问题要求添加命令行选项以在运行 NUnit 时更改配置文件。您可能希望为该问题添加您的声音。
同时,NUNit 提供的选项是使用 --params
选项指定各个参数,例如:
--params "Browser=IExplorer"
如果您愿意自己读取配置文件,您甚至可以使用 --params
指定其名称。
请考虑以下 2 种方法:
1( 看看如何在运行时修改我的 App.exe.config 密钥?您可以使用此方法。首先在CI服务器中设置一些env var,读取它们并在[OneTimSetUp]方法中的某个位置更改您的app.config或测试框架中的任何属性。
2(看看这个插件 https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.SlowCheetah-XMLTransforms 这里 http://www.c-sharpcorner.com/article/transform-config-using-slow-cheetah/我用过它,真的很喜欢它。在您的工作中,您只需要将目标从发布更改为您创建的任何内容,它工作得非常好。另一个优势 - 您可以轻松地切换到Visual Studio中的任何app.config,并在任何环境中运行/调试测试,只需从下拉列表中选择您的配置即可。
附言在这两种情况下,您都不需要在 Nunit 控制台命令中更改任何内容
在 Nunit 3 中,他们添加了一个 --configfile 选项。 请参阅此小说明。
此外,这里有一些关于参数标志的更多信息:
--params|p=PARAMETER 以 NAME=VALUE 形式指定的测试参数,供测试使用。可以指定多个参数,用分号分隔或多次重复 --params 选项。区分大小写。