2016-09-29 23 views
8

Tôi đang phát triển các thử nghiệm sử dụng Nunitkiểm tra hướng dữ liệu theo cách. Tôi có phương pháp thử nghiệm với 2 tham số: đường dẫn đến tệp xlsx và tên trang tính. Nó hoạt động hoàn hảo trong Visual Studio khi tôi vượt qua các thông số trong TestCase thuộc tính, ví dụ như khi tôi muốn chạy 3 trường hợp thử nghiệm phải viết một cái gì đó như thế này:thông số trường hợp kiểm tra vượt qua bằng cách sử dụng giao diện điều khiển nunit

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

Tôi muốn chạy các trường hợp thử nghiệm của tôi và vượt qua các thông số sử dụng Bàn điều khiển Nunit (không viết các tham số trong mã).

Có thể đạt được điều đó không?

Trả lời

19

Nếu bạn đang sử dụng NUnit 3 bạn có thể sử dụng tài sản TestContext.Parameters:

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

và đối số dòng lệnh --params:

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

Cảm ơn rất nhiều! Nó hoạt động cho 1 bộ tham số. Còn nếu tôi muốn chạy nhiều trường hợp thử nghiệm như trong câu hỏi của tôi thì sao? – kotoj

+0

@kotoj, chuyển chúng thành chuỗi phân cách bên trong một tham số – Fabio

+0

bạn có thể giúp tôi làm điều này với AutoRun(). Thực hiện(). Tôi chạy thử nghiệm với thuộc tính category như '' .Execute (new String [] {"--where = cat = testname"}); '' bây giờ làm thế nào để thêm '--params' trong này? – Dimple

3

Tôi tìm thấy một cách giải quyết cho nhiều trường hợp kiểm tra, sử dụng TestCaseSource.
mã kiểm tra:

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

Bắt dữ liệu thử nghiệm từ file csv:

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

và tôi lưu trữ tất cả các trường hợp thử nghiệm tôi muốn chạy (đường dẫn tập tin và tên worksheet) trong tập tin csv. Có lẽ không phải là giải pháp tốt nhất, nhưng tôi đã đạt được mục tiêu của mình - không viết các tham số trong mã.

Các vấn đề liên quan