如何从 Nunit 控制台命令行更改用于测试的 app.settings



>我有一套用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 选项。区分大小写。

最新更新