2013-06-17 34 views
6

Chúng tôi có nhiều thử nghiệm trong đó dữ liệu thử được lưu trữ trong Excel. Tôi đã tạo testmethods trong đó các trang tính Excel được kết nối dưới dạng DataSource đến TestContext.Viết kết quả kiểm tra trở lại TestContext bằng Bảng tính Excel dưới dạng DataSource

Vì lý do tiện lợi, tôi muốn cập nhật các trang tính Excel với kết quả kiểm tra để dễ dàng biết dữ liệu (hoặc hệ thống) ở đâu sai.

Những điều tôi đã cố gắng:

Viết nó trực tiếp đến TestContext.DataRow:

TestContext.DataRow.BeginEdit(); 
TestContext.DataRow["Result"] = "change"; 
TestContext.DataRow.EndEdit(); 
TestContext.DataRow.AcceptChanges(); 

Kết quả: trôi qua, nhưng không có hàng được cập nhật trong file Excel của tôi.

Đang cập nhật nó qua DataConnection:

string currentRow = TestContext.DataRow["RowId"].ToString(); 
System.Data.Common.DbCommand cmd = TestContext.DataConnection.CreateCommand(); 
cmd.CommandText = String.Format("UPDATE {0} SET {1} = pass WHERE {2} = {3}", sheetName, columnName, "RowId", currentRow); 
cmd.CommandType = System.Data.CommandType.Text; 
cmd.ExecuteReader(); 

Kết quả: System.Data.OleDb.OleDbException: Syntax error in UPDATE statement.

Và cập nhật nó bằng cách thay đổi DataRow dưới TestContext:

string currentRow = TestContext.DataRow["RowId"].ToString(); 
OleDbDataAdapter adapter = new OleDbDataAdapter(); 
adapter.UpdateCommand = new OleDbCommand(String.Format("UPDATE {0} SET {1} = pass WHERE {2} = {3}", sheetName, columnName, "RowId", currentRow)); 
adapter.UpdateCommand.Connection = (OleDbConnection)TestContext.DataConnection; 
adapter.Update(new System.Data.DataRow[] { TestContext.DataRow }); 

Kết quả: cũng trôi qua, nhưng không có hàng cũng được cập nhật trong tệp Excel của tôi.

Có ai đó đã làm điều này trước khi thành công không? Hay ai đó có một gợi ý mà tôi có thể sai?

+1

Tôi nghĩ bạn nên xem xét dữ liệu thử nghiệm của mình là chỉ đọc. Không thay đổi tệp. Thay vào đó, tạo ra đầu ra hữu ích từ thử nghiệm bao gồm thông tin hữu ích từ hàng không thành công. –

+0

@PabloRomeo cảm ơn bạn đã xem xét và đó là cách tôi đang làm ngay bây giờ: Tôi xuất tất cả các tiêu đề cột với thông tin hàng vào Console và tôi sử dụng thuộc tính Mô tả để nhập thông tin testcase bằng ngôn ngữ Gherkin để testcase được viết đầy đủ vì vậy nó có thể kiểm tra lại ngay cả bởi một người không kỹ thuật. allthoug nó sẽ có nhiều thuận tiện cho kết quả đầu ra vào cột tùy chỉnh trong tệp Excel và sử dụng định dạng có điều kiện để hiển thị dữ liệu nào không thành công trong thử nghiệm, tôi gặp nhiều khó khăn hơn với phương pháp này như kiểm tra chính sách và khóa tệp. – AutomatedChaos

+0

Tại sao không chỉ xem trạng thái không thành công hoặc được truyền từ TestResults.trx khi sử dụng VS? Thử nghiệm theo hướng dữ liệu mở rộng đến nhiều mục nhập (một cho mỗi hàng trong nguồn dữ liệu) nếu tôi không nhầm. Ngoài ra, trong quá khứ, tôi đã sử dụng một số phép biến đổi XSLT công khai có sẵn để chuyển đổi kết quả TRX thành một tệp html có thể đọc được, ví dụ. –

Trả lời

0

MSTest không hỗ trợ viết lại cho các hàng dữ liệu cho các thử nghiệm theo hướng dữ liệu và nó không được thiết kế để thực hiện việc này.

Đề xuất của tôi là sử dụng các phương pháp Trace.Write() vv để in kết quả vào kết quả cho từng lần thử nghiệm riêng lẻ, đó là những gì tôi làm cho mục đích gỡ lỗi trong trường hợp kiểm tra không thành công.

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