Cách nhập, đọc, thay đổi dữ liệu từ Excel trong QTP/UFT
⚡ Tóm tắt thông minh
Nhập, đọc và chỉnh sửa dữ liệu từ Excel trong QTP/UFT Nó dựa vào đối tượng DataTable tích hợp sẵn, đối tượng này tải một bảng tính vào bảng dữ liệu thời gian chạy để mọi kịch bản tự động hóa có thể điều khiển các bước kiểm thử từ các hàng trong bảng tính.

Bảng tính vẫn là nơi phổ biến nhất mà người kiểm thử lưu trữ các giá trị đầu vào, kết quả mong đợi và cài đặt môi trường. QTP, hiện được bán dưới dạng OpenText UFT Một là sau khi sản phẩm được chuyển từ HP sang Micro Focus rồi sang... OpenTextChương trình này đọc các bảng tính đó thông qua đối tượng DataTable. Các phần bên dưới hiển thị chính xác các câu lệnh được sử dụng để nhập một sổ làm việc, đếm số hàng, đọc từng ô, thay đổi giá trị và ghi lại bảng tính vào đĩa.
Các bước nhập, đọc, thay đổi dữ liệu từ EXCEL
Giả sử bạn muốn nhập những nội dung sau: doanh số bán hàng.xls Đưa bài tập vào bài kiểm tra của bạn.
Sau khi tệp được nhập vào UFTHàng đầu tiên sẽ trở thành tiêu đề cột, vì vậy hãy sắp xếp dữ liệu của bạn cho phù hợp. Mọi thứ ở hàng 1 đều được coi là tên tham số chứ không phải dữ liệu kiểm thử, và mỗi hàng còn lại được tính là một hàng dữ liệu.
Cú pháp để nhập toàn bộ tệp Excel được hiển thị bên dưới.
DataTable.Import(FileName)
Trong trường hợp của chúng ta, câu lệnh sẽ trở thành như sau. VBScript không cần dấu ngoặc đơn khi gọi một phương thức như một câu lệnh, vì vậy dạng thông thường được sử dụng ở đây.
DataTable.Import "D:\Automation\Sales.xls"
Sau khi chạy, các hàng được nhập sẽ xuất hiện trong ngăn Dữ liệu thời gian chạy chính xác như cách chúng được bố trí trong sổ làm việc.
Cú pháp để nhập một trang tính cụ thể được hiển thị bên dưới. SheetSource là trang tính nằm bên trong sổ làm việc và SheetDest Đây là trang đích trong bảng dữ liệu thời gian chạy.
DataTable.ImportSheet FileName, SheetSource, SheetDest
Sử dụng Lấy số hàng Phương pháp để lấy số lượng hàng dữ liệu trong một bảng tính. Mỗi câu lệnh phải nằm trên một dòng riêng.
DataTable.Import "D:\Automation\Sales.xls" row = DataTable.GetSheet(1).GetRowCount MsgBox row
Hộp thoại thông báo xuất hiện sẽ hiển thị tổng số hàng của trang tính đã nhập.
Để di chuyển con trỏ đến một hàng cụ thể, hãy sử dụng lệnh sau: Đặt hàng hiện tại phương pháp. Đối số thứ hai của DataTable.Value Đây là số trang, không phải số hàng, đó là lý do tại sao con trỏ hàng phải được di chuyển riêng.
DataTable.Import "D:\Automation\Sales.xls" ' In the code below, 1 is the sheet number DataTable.SetCurrentRow 1 Row1 = DataTable.Value("Year", 1) DataTable.SetCurrentRow 2 Row2 = DataTable.Value("Year", 1) MsgBox "Year Row 1 = " & Row1 & " Year Row 2 = " & Row2
Cả hai giá trị đều được đọc từ cùng một cột nhưng từ hai hàng khác nhau, và hộp thoại thông báo sẽ in chúng cạnh nhau.
Sử dụng Giá trị Phương thức ở bên trái của câu lệnh gán dùng để thay đổi dữ liệu trong trang tính đã nhập. Sự thay đổi này sẽ được lưu trữ trong bộ nhớ cho đến khi bạn gọi lại phương thức đó. Xuất khẩu, ghi bảng dữ liệu thời gian chạy trở lại một tệp Excel.
DataTable.SetCurrentRow 1 DataTable.Value("Year", 1) = 2026 DataTable.Export "D:\Automation\Sales_Updated.xls"
Ô đã chỉnh sửa sẽ hiển thị trong ngăn Dữ liệu thời gian chạy ngay sau khi phép gán được thực thi.
Việc mở tệp bảng tính đã xuất sẽ xác nhận rằng các giá trị đã sửa đổi được lưu vào ổ đĩa chứ không chỉ được giữ lại trong suốt quá trình chạy.
💡 Mẹo: Hãy xuất dữ liệu sang một tên tệp khác với tên tệp bạn đã nhập. Việc ghi lại vào cùng một sổ làm việc đang mở là cách nhanh nhất để gây ra lỗi vi phạm quyền truy cập và làm mất dữ liệu đã chạy.
Hướng dẫn cách đọc, chỉnh sửa và xuất dữ liệu Excel: Một ví dụ đầy đủ
Các đoạn mã trên mỗi đoạn minh họa một phương pháp. Trong một bài kiểm tra thực tế dựa trên dữ liệu, chúng được kết hợp thành một vòng lặp duy nhất để duyệt qua từng hàng, tính toán một cái gì đó, lưu trữ kết quả và xuất bảng tính. Giả sử bảng tính doanh số bán hàng.xls Bảng này chứa bốn cột và ba hàng dữ liệu sau.
| Năm | Khu vực | Các đơn vị | Giá |
|---|---|---|---|
| 2023 | Đông | 120 | 25 |
| 2024 | Đông | 150 | 25 |
| 2025 | hướng Tây | 200 | 30 |
Đoạn mã bên dưới thêm một Doanh thu Chương trình tạo một cột, điền dữ liệu từng hàng một, liên tục tính tổng và ghi bảng tính đã hoàn thành vào một tệp mới. AddParameter Hàm này được sử dụng vì cột đó không tồn tại trong bảng tính nguồn; việc gọi hàm này cho một cột đã tồn tại sẽ gây ra lỗi.
' Read, calculate and export Excel data in UFT One Dim sh, rowCount, i, units, price, revenue, total DataTable.Import "D:\Automation\Sales.xls" Set sh = DataTable.GetSheet(1) sh.AddParameter "Revenue", "" rowCount = sh.GetRowCount Print "Total rows imported: " & rowCount total = 0 For i = 1 To rowCount DataTable.SetCurrentRow i units = DataTable.Value("Units", 1) price = DataTable.Value("Price", 1) revenue = CInt(units) * CInt(price) DataTable.Value("Revenue", 1) = revenue total = total + revenue Print "Row " & i & " | Year: " & DataTable.Value("Year", 1) & _ " | Region: " & DataTable.Value("Region", 1) & _ " | Revenue: " & revenue Next Print "Grand Total Revenue: " & total DataTable.Export "D:\Automation\Sales_Revenue.xls" Set sh = Nothing
Đầu ra:
Total rows imported: 3 Row 1 | Year: 2023 | Region: East | Revenue: 3000 Row 2 | Year: 2024 | Region: East | Revenue: 3750 Row 3 | Year: 2025 | Region: West | Revenue: 6000 Grand Total Revenue: 12750
Ba điểm trong kịch bản này quan trọng hơn những điểm còn lại. Thứ nhất, GetRowCount Trả về 3 thay vì 4 vì hàng tiêu đề được sử dụng làm tên cột. Thứ hai, SetCurrentRow Hàm này được gọi ở đầu mỗi vòng lặp; nếu không có nó, cả ba vòng lặp sẽ đọc cùng một hàng. Thứ ba, các giá trị xuất ra từ bảng dữ liệu là chuỗi ký tự, vì vậy CInt Phép toán này được áp dụng trước phép nhân để tránh việc nối chuỗi thay vì thực hiện phép toán số học. Bỏ quaping DataTable.Export Điều này sẽ khiến doanh thu đã tính toán hiển thị trong ngăn Dữ liệu nhưng không được lưu vào bất kỳ tập tin nào trên ổ đĩa.
So sánh đối tượng DataTable với đối tượng COM trong Excel UFT
Đối tượng DataTable không phải là cách duy nhất để truy cập vào bảng tính. UFT tập lệnh cũng có thể tạo ra một Excel.Application Đối tượng COM và điều khiển Excel trực tiếp. Hai cách tiếp cận này giải quyết các vấn đề khác nhau.
| Yếu tố | Đối tượng DataTable | Đối tượng COM Excel |
|---|---|---|
| Cài đặt Excel | Không cần thiết trên máy thực thi. | Microsoft Excel cần được cài đặt. |
| Phong cách trình bày | Theo tên cột và con trỏ hàng | Theo tọa độ ô, phạm vi hoặc phạm vi được đặt tên. |
| Lặp lại | Các hàng tự động điều khiển các vòng lặp thử nghiệm. | Không có liên kết đến các lần lặp; looping là thủ công |
| Định dạng và công thức | Bỏ qua; chỉ các giá trị được đọc | Truy cập đầy đủ vào công thức, màu sắc và biểu đồ. |
| Nhiều sổ tay | Một bảng thời gian chạy duy nhất, các trang tính được nhập từng cái một. | Mở đồng thời bất kỳ số lượng sổ làm việc nào. |
| Báo cáo kết quả | Các giá trị xuất hiện trong UFT chạy kết quả tự động | Sẽ không có thông tin nào được ghi nhận trừ khi bạn tự báo cáo. |
| Gánh nặng dọn dẹp | Xử lý bởi UFT | Bạn phải đóng, thoát và giải phóng mọi đối tượng. |
Nguyên tắc thực tế rất đơn giản. Sử dụng đối tượng DataTable để tham số hóa dễ dàng, trong đó mỗi hàng của bảng tính trở thành một lần lặp của một kiểm tra tự động hóa Chạy. Chỉ chuyển sang sử dụng đối tượng COM khi bạn cần thứ gì đó mà bảng dữ liệu không thể thể hiện, chẳng hạn như đọc kết quả công thức, ghi báo cáo được định dạng hoặc so sánh hai sổ làm việc trong cùng một tập lệnh. Ví dụ dưới đây đọc một ô, ghi lại trạng thái và tắt Excel đúng cách.
Dim xlApp, xlBook, xlSheet, cellValue Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False xlApp.DisplayAlerts = False Set xlBook = xlApp.Workbooks.Open("D:\Automation\Sales.xls") Set xlSheet = xlBook.Worksheets("Sheet1") cellValue = xlSheet.Cells(2, 1).Value Print "Cell A2 contains: " & cellValue xlSheet.Cells(2, 5).Value = "Reviewed" xlBook.Save ' Release everything, in this order xlBook.Close False xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing
Đầu ra:
Cell A2 contains: 2023
Ô A2 chứa giá trị 2023 vì hàng 1 của bảng tính là hàng tiêu đề và cột A là... NămLưu ý rằng địa chỉ COM được đánh số từ 1 và tính cả phần tiêu đề, trong khi đó DataTable.SetCurrentRow 1 trỏ vào hàng dữ liệu đầu tiên.
Các lỗi thường gặp khi sử dụng Excel với UFT và Cách Sửa Chữa Chúng
Hầu hết các vấn đề về Excel UFT Những lỗi này bắt nguồn từ một số ít lỗi lặp đi lặp lại. Nhận biết được chúng sẽ giúp tiết kiệm rất nhiều thời gian gỡ lỗi.
⚠️ Cảnh báo: Tiến trình EXCEL.EXE bị bỏ rơi là tác dụng phụ phổ biến nhất của tự động hóa COM. Mỗi CreateObject("Excel.Application") điều đó không phù hợp với Quit thêm Set … = Nothing Để lại một phiên bản Excel ẩn đang chạy. Sau vài trăm lần chạy thử, máy thực thi hết bộ nhớ và sổ làm việc nguồn bị khóa, không thể chỉnh sửa.
- Excel vẫn được lưu trong bộ nhớ. Đóng sổ làm việc lại, gọi điện.
xlApp.QuitSau đó, hãy giải phóng các đối tượng trang tính, sổ làm việc và ứng dụng theo thứ tự đó. Việc giải phóng ứng dụng trước tiên sẽ giữ lại một tham chiếu hoạt động và duy trì tiến trình. - Các thay đổi sẽ biến mất sau khi quá trình chạy hoàn tất.
DataTable.ValueChỉ ghi vào bảng dữ liệu thời gian chạy. Không cóDataTable.ExportKhông có dữ liệu nào được gửi đến hệ thống tập tin. - "Cột không tồn tại" hoặc lỗi tham số không hợp lệ. Tên cột được truyền đến
DataTable.ValuePhải khớp chính xác với ô tiêu đề, bao gồm cả khoảng trắng ở cuối. Sử dụngAddParameterTạo cột trước khi ghi dữ liệu vào cột đó. - Mỗi lần lặp đều đọc cùng một giá trị.
SetCurrentRowHàm này không được gọi bên trong vòng lặp, do đó con trỏ hàng không bao giờ di chuyển. - Số hàng lệch một hàng.
GetRowCountKhông bao gồm hàng tiêu đề. Một bảng tính có tiêu đề và mười bản ghi sẽ trả về 10, chứ không phải 11. - Lỗi đường dẫn và quyền truy cập. Các đường dẫn được mã hóa cứng như
D:\Automation\Sales.xlsLỗi xảy ra trên các máy khác. Hãy xây dựng đường dẫn từ một biến môi trường để cùng một kịch bản có thể chạy trên mọi máy chủ. - Các ô được hợp nhất và nhiều hàng tiêu đề. Quá trình nhập dữ liệu yêu cầu chính xác một hàng tiêu đề với các tên duy nhất. Các ô được hợp nhất sẽ tạo ra các tên tham số trống hoặc trùng lặp.
- Vi phạm quy định chia sẻ dữ liệu xuất khẩu. Không thể mở tệp đích trong Excel trong khi
ExportChạy chương trình. Hãy đóng nó trước, hoặc xuất ra tệp có tên kèm dấu thời gian.
Một thói quen hữu ích là gói gọn việc dọn dẹp COM trong một hàm xử lý sự kiện. On Error Resume Next khối được đặt trong một hàm phục hồi chuyên dụng, do đó lỗi xảy ra giữa chừng vẫn khiến Excel tắt. Khi dữ liệu Excel được đưa vào một hàm chính thức trường hợp thử nghiệm Đối với kho lưu trữ, nguyên tắc tương tự cũng áp dụng cho kết quả: xuất một lần, xác minh tệp tồn tại, sau đó đính kèm nó vào lần chạy.
Để hiểu sâu hơn về các chủ đề đã đề cập ở đây, hãy đọc toàn bộ tài liệu. QTP/UFT hướng dẫn Để hiểu rõ hơn về khuôn khổ tổng thể, hãy tìm hiểu cách thúc đẩy kết quả. ALM từ UFT, xem lại những kiến thức cơ bản trong kiểm thử phần mềmvà so sánh phương pháp này với lập trình dựa trên dữ liệu trong Selenium.






