我使用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
?
如果有任何其他解决方案/建议,我很高兴得到所有建议。
答案 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-XMLTransforms和http://www.c-sharpcorner.com/article/transform-config-using-slow-cheetah/ 我用它并且非常喜欢它。在你工作的CI中你只需要从发布到你创建的任何目标的改变目标,它工作得很好。另一个优点 - 您可以轻松切换到Visual Studio中的任何app.config,并在任何环境上运行/ debug test,只需从下拉列表中选择配置。
P.S。在这两种情况下,您无需在Nunit控制台命令
中更改任何内容答案 2 :(得分:0)