Thước đo góc - Gỡ lỗi
Bây giờ chúng ta đã xem tất cả các khái niệm về Thước đo góc trong các chương trước, chúng ta hãy hiểu các khái niệm gỡ lỗi một cách chi tiết trong chương này.
Giới thiệu
Các bài kiểm tra end-to-end (e2e) rất khó gỡ lỗi vì chúng phụ thuộc vào toàn bộ hệ sinh thái của ứng dụng đó. Chúng tôi đã thấy rằng chúng phụ thuộc vào các hành động khác nhau hoặc đặc biệt có thể nói rằng chúng phụ thuộc vào các hành động trước đó như đăng nhập và đôi khi chúng phụ thuộc vào sự cho phép. Một khó khăn khác trong việc gỡ lỗi các bài kiểm tra e2e là sự phụ thuộc của nó vào WebDriver vì nó hoạt động khác nhau với các hệ điều hành và trình duyệt khác nhau. Cuối cùng, việc gỡ lỗi kiểm tra e2e cũng tạo ra các thông báo lỗi dài và gây khó khăn cho việc tách các vấn đề liên quan đến trình duyệt và lỗi quy trình kiểm tra.
Các loại thất bại
Có thể có nhiều lý do khác nhau dẫn đến sự cố của bộ thử nghiệm và sau đây là một số loại lỗi nổi tiếng -
Lỗi WebDriver
Khi một lệnh không thể được hoàn thành, một lỗi được đưa ra bởi WebDriver. Ví dụ: một trình duyệt không thể lấy địa chỉ đã xác định hoặc một phần tử không được tìm thấy như mong đợi.
WebDriver bị lỗi không mong muốn
Một lỗi không mong muốn liên quan đến trình duyệt và hệ điều hành xảy ra khi không cập nhật được trình quản lý trình điều khiển web.
Lỗi thước đo góc cho Angular
Sự thất bại của Protractor cho Angular xảy ra khi Protractor không tìm thấy Angular trong thư viện như mong đợi.
Lỗi thước đo góc 2
Trong loại lỗi này, Thước đo góc sẽ không thành công khi không tìm thấy tham số useAllAngular2AppRoots trong cấu hình. Nó xảy ra bởi vì, không có điều này, quá trình kiểm tra sẽ xem xét một phần tử gốc duy nhất trong khi mong đợi nhiều hơn một phần tử trong quy trình.
Thước đo góc bị lỗi khi hết giờ
Loại lỗi này xảy ra khi thông số kỹ thuật kiểm tra đạt một vòng lặp hoặc một nhóm dài và không trả lại dữ liệu kịp thời.
Kỳ vọng thất bại
Một trong những lỗi thử nghiệm phổ biến nhất cho thấy sự thất bại kỳ vọng thông thường trông như thế nào.
Tại sao gỡ lỗi lại quan trọng trong Thước đo góc?
Giả sử, nếu bạn đã viết các trường hợp thử nghiệm và chúng bị lỗi thì điều rất quan trọng là phải biết cách gỡ lỗi các trường hợp thử nghiệm đó vì sẽ rất khó để tìm ra chính xác nơi xảy ra lỗi. Trong khi làm việc với Thước đo góc, bạn sẽ gặp một số lỗi dài trong phông chữ màu đỏ trong dòng lệnh.
Tạm dừng và gỡ lỗi kiểm tra
Các cách gỡ lỗi trong Thước đo góc được giải thích ở đây & miuns;
Phương pháp tạm dừng
Sử dụng phương pháp tạm dừng để gỡ lỗi các trường hợp thử nghiệm trong Thước đo góc là một trong những cách dễ nhất. Chúng tôi có thể nhập lệnh sau tại nơi chúng tôi muốn tạm dừng mã thử nghiệm của mình & miuns;
browser.pause();
Khi các mã đang chạy chạm vào lệnh trên, nó sẽ tạm dừng chương trình đang chạy tại thời điểm đó. Sau đó, chúng ta có thể đưa ra các lệnh sau theo sở thích của mình:
Loại C để Tiến lên
Bất cứ khi nào một lệnh đã hết, chúng ta phải gõ C để tiếp tục. Nếu bạn không gõ C, bài kiểm tra sẽ không chạy mã đầy đủ và nó sẽ thất bại do lỗi Jasmine time out.
Nhập repl để vào chế độ tương tác
Lợi ích của chế độ tương tác là chúng ta có thể gửi các lệnh WebDriver đến trình duyệt của mình. Nếu chúng ta muốn vào chế độ tương tác, hãy nhậprepl.
Gõ Ctrl-C để thoát và tiếp tục kiểm tra
Để thoát khỏi bài kiểm tra từ trạng thái tạm dừng và tiếp tục bài kiểm tra từ điểm nó đã dừng, chúng ta cần gõ Ctrl-C.
Thí dụ
Trong ví dụ này, chúng tôi có tệp thông số kỹ thuật bên dưới có tên example_debug.js, thước đo góc cố gắng xác định một phần tử bằng bộ định vị by.binding('mmmm') nhưng URL (https://angularjs.org/ trang không có phần tử với bộ định vị được chỉ định.
describe('Suite for protractor debugger',function(){
it('Failing spec',function(){
browser.get("http://angularjs.org");
element(by.model('yourName')).sendKeys('Vijay');
//Element doesn't exist
var welcomeText =
element(by.binding('mmmm')).getText();
expect('Hello '+welcomeText+'!').toEqual('Hello Ram!')
});
});
Bây giờ, để thực hiện kiểm tra ở trên, chúng ta cần thêm mã browser.pause (), nơi bạn muốn tạm dừng kiểm tra, trong tệp đặc tả ở trên. Nó sẽ trông như sau:
describe('Suite for protractor debugger',function(){
it('Failing spec',function(){
browser.get("http://angularjs.org");
browser.pause();
element(by.model('yourName')).sendKeys('Vijay');
//Element doesn't exist
var welcomeText =
element(by.binding('mmmm')).getText();
expect('Hello '+welcomeText+'!').toEqual('Hello Ram!')
});
});
Nhưng trước khi thực hiện, chúng ta cũng cần thực hiện một số thay đổi trong tệp cấu hình. Chúng tôi đang thực hiện các thay đổi sau trong tệp cấu hình đã sử dụng trước đó, có tênexample_configuration.js trong chương trước -
// An example configuration file.
exports.config = {
directConnect: true,
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
// Framework to use. Jasmine is recommended.
framework: 'jasmine',
// Spec patterns are relative to the current working directory when
// protractor is called.
specs: ['example_debug.js'],
allScriptsTimeout: 999999,
jasmineNodeOpts: {
defaultTimeoutInterval: 999999
},
onPrepare: function () {
browser.manage().window().maximize();
browser.manage().timeouts().implicitlyWait(5000);
}
};
Bây giờ, hãy chạy lệnh sau:
protractor example_configuration.js
Trình gỡ lỗi sẽ bắt đầu sau lệnh trên.
Phương pháp gỡ lỗi
Sử dụng phương pháp tạm dừng để gỡ lỗi các trường hợp thử nghiệm trong Thước đo góc là một cách nâng cao một chút. Chúng ta có thể gõ lệnh sau tại nơi chúng ta muốn ngắt mã thử nghiệm của mình -
browser.debugger();
Nó sử dụng trình gỡ lỗi nút để gỡ lỗi mã thử nghiệm. Để chạy lệnh trên, chúng ta phải nhập lệnh sau vào một dấu nhắc lệnh riêng biệt đã mở từ vị trí dự án thử nghiệm:
protractor debug protractor.conf.js
Trong phương pháp này, chúng ta cũng cần nhập C vào thiết bị đầu cuối để tiếp tục mã kiểm tra. Nhưng ngược lại với phương pháp tạm dừng, trong phương pháp này, nó chỉ được nhập một lần.
Thí dụ
Trong ví dụ này, chúng tôi đang sử dụng cùng một tệp đặc tả có tên bexample_debug.js, đã sử dụng ở trên. Sự khác biệt duy nhất là thay vìbrowser.pause(), chúng ta cần sử dụng browser.debugger()nơi chúng tôi muốn phá vỡ mã kiểm tra. Nó sẽ trông như sau:
describe('Suite for protractor debugger',function(){
it('Failing spec',function(){
browser.get("http://angularjs.org");
browser.debugger();
element(by.model('yourName')).sendKeys('Vijay');
//Element doesn't exist
var welcomeText = element(by.binding('mmmm')).getText();
expect('Hello '+welcomeText+'!').toEqual('Hello Ram!')
});
});
Chúng tôi đang sử dụng cùng một tệp cấu hình, example_configuration.js, được sử dụng trong ví dụ trên.
Bây giờ, hãy chạy kiểm tra thước đo góc với tùy chọn dòng lệnh gỡ lỗi sau
protractor debug example_configuration.js
Trình gỡ lỗi sẽ bắt đầu sau lệnh trên.