2016-09-29 3 views
8

Ich entwickle Tests mit Nunit und datengetriebenen Test Ansatz. Ich habe Testmethode mit 2 Parametern: Pfad zu xlsx Datei und Arbeitsblattname. Es funktioniert perfekt in Visual Studio, wenn ich Parameter in TestCase Attribut übergeben, zum Beispiel, wenn ich 3 Testfälle ausführen möchten haben, so etwas schreiben:Bestanden Testfall Parameter mit Nunit-Konsole

[TestCase(@"pathToFile.xlsx", "TestCase1")] 
[TestCase(@"pathToFile.xlsx", "TestCase2")] 
[TestCase(@"pathToFile.xlsx", "TestCase3")] 
public void performActionsByWorksheet(string excelFilePath, string worksheetName) 
{  
    //test code 
} 

Ich möchte meine Testfälle laufen und Parameter übergeben mit Nunit Konsole (nicht Parameter im Code schreiben).

Ist es möglich, es zu erreichen?

Antwort

19

Wenn Sie NUnit 3 verwenden, können Sie TestContext.Parameters Eigenschaft:

[Test] 
public void performActionsByWorksheet() 
{ 
    string excelFilePath = TestContext.Parameters["excelFilePath"]; 
    string worksheetName = TestContext.Parameters["worksheetName"]; 
    TestContext.WriteLine(excelFilePath); 
    TestContext.WriteLine(worksheetName); 
} 

und --params Befehlszeilenargument:

nunit3-console.exe path/to/your/test.dll --params=excelFilePath=testPath;worksheetName=testName 
+0

Vielen Dank! Es funktioniert für 1 Parametersatz. Was ist, wenn ich mehr Testfälle wie in meiner Frage ausführen möchte? – kotoj

+0

@kotoj, übergeben Sie sie als Trennzeichen innerhalb eines Parameters – Fabio

+0

können Sie mir dabei helfen mit AutoRun(). Execute(). Ich führe einen Test mit dem Attribut category als '' .Execute (new String [] {"--where = cat = testname"}); '' Wie fügt man '--params' hinzu? – Dimple

3

ich eine Lösung für viele Testfälle gefunden, mit TestCaseSource.
Prüfregeln:

[Test, TestCaseSource("testData")] 
public void performActionsByWorksheet(string excelFilePath, string worksheetName) 
{ 
    Console.WriteLine("excel filePath: {0}", excelFilePath); 
    Console.WriteLine("worksheet Name: {0}", worksheetName); 
} 

Erste Testdaten aus CSV-Datei:

static object[] testData() 
{ 
    var reader = new StreamReader(File.OpenRead(@"TestCases.csv")); 
    List<object[]> rows = new List<object[]>(); 

    while (!reader.EndOfStream) 
    { 
     var line = reader.ReadLine(); 
     var values = line.Split(','); 
     rows.Add(values); 
    } 

    return rows.ToArray<object[]>();       
} 

und speichere ich alle Fälle Test, den ich laufen soll (Dateipfade und Arbeitsblatt-Namen) in CSV-Datei. Vielleicht nicht die beste Lösung, aber ich habe mein Ziel erreicht - keine Parameter im Code zu schreiben.

Verwandte Themen