使用NUnit时如何将参数传递给dotnet test命令

时间:2019-01-06 17:30:12

标签: c# selenium testing .net-core nunit

我正在使用C#和.NET Core,Selenium和NUnit开发一些端到端测试。 现在,我想编写一个登录测试用例。只需使用dotnet test命令即可​​从控制台启动我的测试。

我只是想将用户名和密码传递给此命令,并在测试中获取它们。 我无法使用NUnit-Console,因为它目前不支持.NET Core

解决此问题的建议方法是什么?我希望不要将设置存储在文件中,而是直接将其输入到控制台中。

3 个答案:

答案 0 :(得分:2)

如果要避免运行设置文件,则可以使用此替代方法。建议的传递参数的方法之一是通过环境变量。因此,在您的C#nunut(或xunit)文件中,您可以执行以下操作:

// in mytest.cs
var user = Environment.GetEnvironmentVariable("TestUser");
var password = Environment.GetEnvironmentVariable("TestPassword");
var url = Environment.GetEnvironmentVariable("TestUrl");

如果您不想确定地设置环境变量,请记住,您始终可以仅在会话过程中临时设置它们。一种方法是创建一个简单的cmd文件

#launchtests.cmd
SETLOCAL
SET TestUser='pete001'
SET TestPassword='secret'
SET TestUrl='http://testserver.local/login'
DOTNET TEST mytest.csproj

现在有趣的部分。您可以参数化每个方面。因此您可以将其更改为:

#run wity launchtests.cmd pete001 secret 'http://testserver.local/login'
SETLOCAL
SET %1
SET %2
SET %3
DOTNET TEST mytest.csproj

或者如果您想从Azure DevOps(fka VSTS或TFS)管道启动测试,则可以简单地使用$(...)表示法内联变量,即使它们被标记为秘密和/或从Azure KeyVault。

#In AzureDevops, variables not marked as secret are already added to the environment
SET TestPassword=$(TestPassword)
dotnet test $(Build.SourcesDirectory)\MyCompany.MyProduct.UITests\MyTest.csproj --configuration $(BuildConfiguration) --collect "Code Coverage" --logger trx --results-directory $(Agent.TempDirectory)

run Azure DevOps command task

答案 1 :(得分:1)

不幸的是,将设置从dotnet test传递到NUnit的唯一方法是使用.runsettings文件。 NUnit无法为dotnet test工具创建自定义命令行参数-尽管我们很乐意!

看看示例.runsettings文件here。您需要的特定位:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Parameters used by tests at runtime -->
  <TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="webAppUserName" value="Admin" />
    <Parameter name="webAppPassword" value="Password" />
  </TestRunParameters>
</RunSettings>

您应该可以使用dotnet test标志将此文件传递到-s

dotnet test myProj.csproj -s mySettings.runsettings

答案 2 :(得分:0)

该文档建议现在应该可以在命令行中而不是在runsettings文件中传递参数。

https://github.com/Microsoft/vstest-docs/blob/master/docs/RunSettingsArguments.md

dotnet test -- MSTest.MapInconclusiveToFailed=True MSTest.DeploymentEnabled=False

注意-- 之后的空格。

编辑1

对我有用的是结合使用以下语法添加运行设置文件,然后覆盖我想要的参数:

dotnet test -- TestRunParameters.Parameter(name=\"myParam\", value=\"value\")