2016-09-29 22 views
8

Nunit ve veriye dayalı test yaklaşımını kullanarak testler geliştiriyorum. 2 parametreli test yöntemim var: xlsx dosyasına giden yol ve çalışma sayfası adı. O ben 3 test durumları çalıştırmak istediğinizde örneğin TestCase özelliğinde parametreleri geçirmek böyle bir şey yazmak zorunda Visual Studio mükemmel çalışır:Nunit konsolu kullanarak test durumu parametrelerini geç

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

benim test durumları çalıştırın ve parametrelerini geçirmek istiyorum Nunit Console kullanarak (kod içinde parametreler yazmamak için).

Bunu başarmak mümkün mü? Eğer NUnit 3 kullanıyorsanız

cevap

19

Eğer TestContext.Parameters özelliğini kullanabilirsiniz:

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

ve --params komut satırı argümanı:

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

Çok teşekkürler! 1 set parametresi için çalışır. Soruda olduğu gibi daha fazla test vakası çalıştırmak istermiyim? – kotoj

+0

Kotoj, bunları bir parametre içinde – Fabio

+0

parametresine ayrılmış bir dizge olarak aktarırsanız bunu AutoRun() ile gerçekleştirmeme yardımcı olabilirsiniz. ".Execute (yeni String [] {" - where = cat = testname "}); 'artık şimdi - --params' eklemek için kategori özniteliği ile test çalıştırıyorum? – Dimple

3

kullanıyorum, birçok test durumları için geçici bir çözüm buldu TestCaseSource.
Testi kodu:

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

csv dosyasından test verilerini alma:

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[]>();       
} 

ve ben csv dosyasındaki tüm ı çalıştırmak istediğiniz test durumları (dosya yolları ve çalışma sayfası adları) depolar. Belki de en iyi çözüm değil, ama hedefime ulaştım - kodda parametre yazmam.

İlgili konular