C#を使用してC#を使用してエンドツーエンドのテストを開発しています.Sety Core、Selenium、NUnit。これでログインテストケースを書きたいです。マイテストは、dotnet test
コマンドを使用するだけでコンソールから開始されます。
私は単にユーザー名とパスワードをこのコマンドに渡し、それらをテストに入手したいです。 現時点では.NETコアをサポートしていないため、NUnit-Consoleを使用できません。
この問題を解決するための提案された方法は何ですか?私はファイルに設定を保存しないのではなく、それらを直接コンソールに入力します。
ランセットファイルを避けたい場合は、この回避策を使用できます。パラメータを渡す推奨される方法の1つは、環境変数を介して行われます。それで、あなたのC#ヌナッツ(またはXunit)ファイルで、次のようなことができます。
// in mytest.cs
var user = Environment.GetEnvironmentVariable("TestUser");
var password = Environment.GetEnvironmentVariable("TestPassword");
var url = Environment.GetEnvironmentVariable("TestUrl");
_
環境変数を定義的に設定したくない場合は、常にセッションプロセスだけを一時的に設定できます。これを行う1つの方法は、単純な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 TestUser=%1
SET TestPassword=%2
SET TestUrl=%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)
_
残念ながら、dotnet test
からnunitに設定を渡す唯一の方法は.runsettings
ファイルを使用することです。 NUnitがdotnet test
ツールのカスタムコマンドライン引数を作成する方法はありません - 私たちはそこにいるのが好きですが!
.runsettings
ファイル のサンプルを見て 。特定のビットが必要です。
<?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
このドキュメントでは、ランセットファイル内ではなく、コマンドラインで引数を渡すことが可能であることが示唆されています。
https://github.com/microsoft/vstest-docs/blob/master/docs/runsettingingsarguments.md
_dotnet test -- MSTest.MapInconclusiveToFailed=True MSTest.DeploymentEnabled=False
_
_--
_の後のスペースに注意してください。
編集1
私のために働いたことは、ランセティファイルを追加してから、私がこの構文を使って、私が望んでいるパラメータを上書きしました。
dotnet test -- TestRunParameters.Parameter(name=\"myParam\", value=\"value\")