如何从Nunit控制台命令行更改app.settings以进行测试

时间:2018-01-11 10:35:02

标签: c# visual-studio selenium command-line nunit

我使用VS 2017,Nunit(项目类型 - 使用.net框架452的类库)开发了一组selenium测试。在我的OneTimeSetUp中,我正在阅读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"
packages\NUnit.ConsoleRunner.3.7.0\tools\nunit3-console pathToDll --where "cat == Demo" 

cmd /k 

现在,只要我针对一个环境,这个工作正常。现在当我需要将测试切换到不同的env时,在从命令行或VS 2017运行测试之前,我需要更改指向不同env变量的app.config bu。

有没有办法,我可以在命令行中将这些值作为参数传递,然后在执行任何测试之前更新app.config

如果有任何其他解决方案/建议,我很高兴得到所有建议。

3 个答案:

答案 0 :(得分:1)

NUnit不以任何方式使用或修改您的配置文件。它所做的只是确保它可用于测试。

This issue要求添加命令行选项以在运行NUnit时更改配置文件。您可能希望在问题中添加语音。

同时,NUNit提供的选项是使用--params选项指定各个参数,例如:

--params "Browser=IExplorer"

如果您愿意自己阅读配置文件,您甚至可以使用--params指定其名称。

答案 1 :(得分:0)

请考虑theese 2方法:

1)看How to modify my App.exe.config keys at runtime? 你可以使用这种方法。首先在CI服务器中设置一些env变量,读取它们并在[OneTimSetUp]方法中的某个位置更改app.config或在测试框架中的任何属性。

2)看一下这个插件https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.SlowCheetah-XMLTransformshttp://www.c-sharpcorner.com/article/transform-config-using-slow-cheetah/ 我用它并且非常喜欢它。在你工作的CI中你只需要从发布到你创建的任何目标的改变目标,它工作得很好。另一个优点 - 您可以轻松切换到Visual Studio中的任何app.config,并在任何环境上运行/ debug test,只需从下拉列表中选择配置。

P.S。在这两种情况下,您无需在Nunit控制台命令

中更改任何内容

答案 2 :(得分:0)

在Nunit 3中,他们添加了--configfile选项。请参阅this的简短说明。

here也是有关params标志的更多信息:

-params | p = PARAMETER以NAME = VALUE形式指定的测试参数,供测试使用。可以指定多个参数,以分号分隔或多次重复--params选项。区分大小写。