Selenium WebDriver: TestNG để quản lý trường hợp thử nghiệm & tạo báo cáo



Hướng dẫn Selenium WebDriver này sẽ giúp bạn hiểu nhu cầu sử dụng TestNG với Selenium để quản lý các trường hợp thử nghiệm và tạo báo cáo thử nghiệm chi tiết.

Trong blog trước, tôi đã dạy bạn cách chạy thử nghiệm Selenium WebDriver đầu tiên của bạn. Trong blog này, tôi sẽ trình bày các khái niệm nâng cao về Selenium WebDriver. Tôi đã đề cập khá nhiều lần rằng Selenium WebDriver có những hạn chế liên quan đến quản lý trường hợp thử nghiệm và tạo báo cáo thử nghiệm. Vậy thay thế bằng cái gì? Một công cụ phổ biến như Selenium chắc chắn phải có cách giải quyết đúng không? Tất nhiên là thế! Chúng tôi có thể sử dụng kết hợp Selenium và TestNG để khắc phục hạn chế này và đó sẽ là chủ đề thảo luận của blog này.

java vectơ là gì

Trong trường hợp bạn chưa quen với Selenium và muốn được giới thiệu về các khái niệm cơ bản, bạn có thể bắt đầu hành trình của mình từ đây: ? Tuy nhiên, những người khác có thể bắt đầu với TestNG cho Selenium từ blog này.Bạn cũng nên biết rằng các tổ chức đang tích cực tìm kiếm các chuyên gia với , khiến nó trở thành một kỹ năng quan trọng mà người kiểm thử phần mềm phải thành thạo.





Các nhà phát triển phần mềm từ khắp nơi trên thế giới sẽ nhất trí rằng việc viết mã trong các trường hợp thử nghiệm sẽ tiết kiệm một phần đáng kể thời gian gỡ lỗi của họ. Tại sao? Đó là vì các trường hợp thử nghiệm giúp tạo mã mạnh mẽ và không có lỗi. sao làm được vậy? Bằng cách chia toàn bộ mã thành các trường hợp thử nghiệm nhỏ hơn, sau đó bằng cách đánh giá từng trường hợp thử nghiệm này để đạt / không đạt điều kiện, chúng tôi có thể tạo mã không có lỗi. Vì Selenium không hỗ trợ thực thi mã trong các trường hợp thử nghiệm, chúng tôi phải sử dụng TestNG cho tương tự. Đây là nơi TestNG phù hợp với khuôn khổ Selenium.

TestNG viết tắt của Thử nghiệm thế hệ tiếp theo và nó là một khung tự động thử nghiệm mã nguồn mở được lấy cảm hứng từ JUnit và NUnit. Chà, không chỉ là cảm hứng, mà còn là bản nâng cấp cho hai khuôn khổ đó. Vì vậy, bạn có thể hỏi nâng cấp ở đây là gì?Nâng cấp với TestNG là nó cung cấp các chức năng bổ sung như: kiểm tra chú thích, nhóm, ưu tiên, tham số hóa và các kỹ thuật giải trình tự trong mã mà trước đó không thể thực hiện được.



Bên cạnh việc quản lý các trường hợp thử nghiệm, thậm chí có thể thu được báo cáo chi tiết về các thử nghiệm bằng cách sử dụng TestNG. Sẽ có một bản tóm tắt hiển thị trường hợp thử nghiệm đã không thành công, cùng với nhóm mà nó là một phần và lớp mà nó thuộc. Khi các lỗi có thể được định vị chính xác như thế này, chúng có thể được sửa ngay lập tức với sự nhẹ nhõm của các nhà phát triển. Hình ảnh dưới đây mô tả hoạt động của TestNG.

testng - selenium webdriver

Vì vậy, làm thế nào để TestNG hoàn thành công việc? Câu hỏi này sẽ được trả lời trongphần tiếp theo của blog hướng dẫn Selenium WebDriver này, nơi tôi sẽ thảo luận về cách quản lý các trường hợp thử nghiệm khác nhau bằng cách sử dụng TestNG.



Selenium WebDriver với TestNG

Các trường hợp kiểm thử có thể được xác định và quản lý bằng một trong những cách sau:

  1. Kiểm tra chú thích
  2. Ưu tiên
  3. Vô hiệu hóa các trường hợp kiểm tra
  4. Phương pháp phụ thuộc
  5. Phân nhóm
  6. Khẳng định
  7. Tạo báo cáo

Hãy để tôi bắt đầu giải thíchmỗi chức năng này.

Kiểm tra chú thích

Trước hết, chúng ta hãy tự hỏi mình câu hỏi này: Tại sao chúng ta cần sử dụng chú thích? Khi nào chúng ta có thể sử dụng chúng? Chú thích trong Selenium được sử dụng để điều khiển phương thức tiếp theo được thực thi. Các chú thích kiểm tra được xác định trước mọi phương pháp trong mã kiểm tra. Trong trường hợp bất kỳ phương thức nào không có chú thích trước, thì phương thức đó sẽ bị bỏ qua và không được thực thi như một phần của mã kiểm tra. Để xác định chúng, các phương thức cần được chú thích đơn giản bằng ‘ @Kiểm tra ‘. Hãy xem đoạn mã dưới đây chẳng hạn.

package testng import org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.testng.annotations.AfterClass import org.testng.annotations.AfterMethod import org.testng.annotations.BeforeClass import org.testng.annotations .BeforeMethod import org.testng.annotations.Test public class TestAnnotations {@Test public void myTestMethod () {System.out.println ('Inside method: - myTestMethod') WebDriver driver = new FirefoxDriver () driver.get ('http: //www.seleniumframework.com/Practiceform/ ') String title = driver.getTitle () System.out.println (title) driver.quit ()} @BeforeMethod public void beforeMethod () {System.out.println (' This đoạn mã được thực thi trước phương thức: - myTestMethod ') System.setProperty (' webdriver.gecko.driver ',' C: UsersVardhanworkspaceSeleniumProjectfilesgeckodriver.exe ')} @AfterMethod public void afterMethod () {System.out.println (' Đoạn này mã được thực thi sau phương thức: - myTestMethod ')} @BeforeClass public void beforeClass () {Syste m.out.println ('Đoạn mã này được thực thi trước khi lớp được thực thi')} @AfterClass public void afterClass () {System.out.println ('Đoạn mã này được thực thi sau khi lớp được thực thi')} }

Trong đoạn mã trên, bạn sẽ nhận thấy rằng tôi chưa xác định phương thức ‘chính’. Tuy nhiên, tôi có 5 phương pháp khác được xác định. Chúng là ‘myTestMethod’, ‘beforeMethod’, ‘afterMethod’, ‘beforeClass’ và ‘afterClass’. Ngoài ra, hãy lưu ý thứ tự định nghĩa của các phương thức trong mã vì chúng sẽ không được thực thi theo thứ tự này.

Phương thức ‘myTestMethod’ được chú thích bằng @Kiểm tra và nó là phương thức chính hoặc đoạn mã phải được thực thi. Các phương thức được chú thích khác sẽ được thực thi trước và sau khi phương thức này được thực thi. Vì ‘beforeMethod’ được chú thích bằng @BeforeMethod , nó sẽ được thực thi trước khi ‘myTestMethod’ được thực thi. Tương tự, ‘afterMethod’ được chú thích bằng @AfterMethod và do đó nó sẽ được thực thi sau ‘myTestMethod’.

Tuy nhiên, ‘beforeClass’ được chú thích bằng @BeforeClass , có nghĩa là nó sẽ được thực thi ngay cả trước khi chính lớp đó được thực thi. Tên lớp của chúng tôi ở đây là TestAnnotations và do đó trước khi lớp bắt đầu được thực thi, đoạn mã bên trong ‘beforeClass’ sẽ được thực thi. Tương tự, ‘afterClass’ được chú thích bằng @AfterMethod và do đó sẽ được thực thi sau lớp TestAnnotations được thực thi.

Nếu bạn vẫn còn nhầm lẫn về thứ tự thực hiện, thì đoạn mã dưới đây chắc chắn sẽ giúp bạn.

1. BeforeSuite 2. BeforeTest 3. BeforeClass 4. BeforeMethod 5. Test 6. AfterMethod 7. AfterClass 8. AfterTest 9. AfterSuite

Đầu ra của đoạn mã trên sẽ là:

Đoạn mã này được thực thi trước khi lớp được thực thi Đoạn mã này được thực thi trước phương thức: - myTestMethod Phương thức Inside: - myTestMethod 1493192682118 geckodriver INFO Đang nghe trên 127.0.0.1:13676 1493192682713 mozprofile :: profile INFO Sử dụng đường dẫn hồ sơ C: UsersVardhanAppDataLocalTprofile .wGkcwvwXkl2y 1493192682729 geckodriver :: marionette THÔNG TIN Khởi động trình duyệt C: Program Files (x86) Mozilla Firefoxirefox.exe 1493192682729 geckodriver :: marionette INFO Đang kết nối với Marionette trên localhost: 59792 [GPU 6152] các bản dựng CẢNH BÁO: lỗi pipe / 109: tệp c: /moz2_slave/m-rel-w32-00000000000000000000/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, dòng 346 1493192688316 Marionette INFO Đang nghe trên cổng 59792 26 tháng 4 năm 2017 1:14:49 PM org. openqa.selenium.remote.ProtocolHandshake createSession INFO: Phương ngữ được phát hiện: W3C JavaScript error: http://t.dtscout.com/i/?l=http%3A%2F%2Fwww.seleniumframework.com%2FPracticeform%2F&j=, line 1: TypeError: document.getElementsByTagNa me (...) [0] là Khung Selenium không xác định | Practiceform 1493192695134 Marionette INFO Các kết nối mới sẽ không còn được chấp nhận ngày 26 tháng 4 năm 2017 1:14:57 PM org.openqa.selenium.os.UnixProcess hủy bỏ SEVERE: Không thể hủy quá trình bằng PID 6724 Đoạn mã này được thực thi sau phương thức: - myTestMethod Đoạn mã này được thực thi sau khi lớp được thực thi PASSED: myTestMethod =================================== ============ Kiểm tra mặc định Kiểm tra chạy: 1, Không đạt: 0, Bỏ qua: 0 ========================= =================================================== ==================== Bộ mặc định Tổng số lần chạy kiểm tra: 1, Không đạt: 0, Bỏ qua: 0 ================= ================================

Như bạn có thể thấy từ đầu ra ở trên, số lần chạy thử nghiệm là 1 và không thành công là 0. Điều này có nghĩa là mã thành công. Ngay cả thứ tự thực hiện các phương thức cũng sẽ theo thứ tựTôiđã đề cập trước đó.

Khi bạn thực thi mã này trong máy của mình, Selenium WebDriver sẽ khởi tạo trình duyệt Firefox của bạn, điều hướng đến biểu mẫu thực hành của Selenium Framework, đóng phiên bản trình duyệt và hiển thị đầu ra giống như được hiển thị ở trên trong IDE Eclipse của bạn.

Tôi chỉ sử dụng 5 chú thích khác nhau trong mã của mình. Nhưng có nhiều chú thích khác có thể được sử dụng để điều khiển phương thức tiếp theo được thực thi. Toàn bộ danh sách các chú thích được giải thích trongbànphía dưới:

@BeforeSuite - Phương thức được chú thích bằng @BeforeSuite sẽ chạy trước khi tất cả các thử nghiệm trong bộ phần mềm chạy.

@AfterSuite - Phương thức được chú thích bằng @AfterSuite sẽ chạy sau khi tất cả các thử nghiệm trong bộ phần mềm đã chạy.

@Trước khi kiểm tra - Phương thức được chú thích bằng @Trước khi kiểm tra sẽ chạy trước khi bất kỳ phương thức kiểm tra nào thuộc về một lớp được chạy.

@AfterTest - Phương thức được chú thích bằng @AfterTest sẽ chạy sau khi tất cả các phương thức kiểm tra thuộc một lớp đã chạy.

@BeforeGroup - Phương thức được chú thích bằng @BeforeGroup sẽ chạy trước khi mỗi nhóm được chạy.

@AfterGroup - Phương thức được chú thích bằng @AfterGroup sẽ chạy sau khi mọi nhóm được chạy.

@BeforeClass - Phương thức được chú thích bằng @BeforeClass sẽ chạy một lần trước khi phương thức kiểm tra đầu tiên trong lớp hiện tại được gọi.

@Sau giờ học - Phương thức được chú thích bằng @Sau giờ học sẽ chạy một lần sau khi tất cả các phương thức kiểm tra trong lớp hiện tại đã chạy.

@BeforeMethod - Phương thức được chú thích bằng @BeforeMethod sẽ chạy trước khi bất kỳ phương thức kiểm tra nào bên trong một lớp được chạy.

@AfterMethod - Phương thức được chú thích bằng @AfterMethod sẽ chạy sau khi mọi phương thức kiểm tra bên trong một lớp được chạy.

@Kiểm tra - Phương thức được chú thích bằng @Kiểm tra là phương pháp kiểm tra chính trong toàn bộ chương trình. Các phương thức được chú thích khác sẽ được thực thi xung quanh phương thức này.

Ảnh chụp màn hình của báo cáo TestNG làtrình bày dưới đây: -

Ưu tiên

Chúng tôi đã nói về cách các phương thức khác nhau có thể được xác định để chúng được thực thi xung quanh @Kiểm tra phương pháp. Nhưng, điều gì sẽ xảy ra nếu bạn có nhiều @Kiểm tra và bạn muốn xác định thứ tự thực thi giữa chúng?

Trong trường hợp đó, chúng ta có thểPsắp xếp chúng bằng cách gán một số cho các trường hợp thử nghiệm được chú thích. Số lượng càng nhỏ, mức độ ưu tiên càng cao. Mức độ ưu tiên có thể được gán dưới dạng các tham số trong khi xác định các trường hợp thử nghiệm. Nhưng, nếu không có mức độ ưu tiên nào được chỉ định, thì các phương pháp kiểm tra có chú thích sẽ được thực hiện theo thứ tự bảng chữ cái của các bài kiểm tra. Xem các thông số của chú thích thử nghiệm trong phần bên dưới củamã.

@Test (Priority = 2) public static void FirstTest () {system.out.println ('Đây là số Test Case thứ hai vì Mức độ ưu tiên số 2')} @Test (Priority = 1) public static void SecondTest () { system.out.println ('Đây là Test Case số 1 vì Mức độ ưu tiên # 1')} @Test public static void FinalTest () {system.out.println ('Đây là Test Case cuối cùng vì không có Mức độ ưu tiên') )}

Vô hiệu hóa các trường hợp kiểm tra

Hãy để tôi chỉ cho bạn một cái gì đó thú vị hơn. Điều gì sẽ xảy ra nếu bạn có mã kéo dài hàng triệu dòng, bao gồm hàng trăm trường hợp thử nghiệm và bạn chỉ muốn vô hiệu hóa một phương pháp thử nghiệm? Thay vào đó, bạn không cần phải xóa bất kỳ phần nào của mã, chúng tôi chỉ cần vô hiệu hóa phương pháp kiểm tra đó.

Hành động vô hiệu hóa một trường hợp thử nghiệm cũng được thực hiện thông qua các tham số. Chúng tôi có thể đặt được kích hoạt thuộc tính 'false'. Theo mặc định, tất cả các trường hợp thử nghiệm sẽ được bật, do đó chúng ta không cần phải xác định chúng mỗi khi viết thử nghiệm. Xem các tham số của phương thức thứ ba và thứ tư trong phần bên dưới củamã.

@Test (Priority = 2, enable = True) public static void FirstTest () {system.out.println ('Đây là Test Case số 2 vì Mức độ ưu tiên # 2')} @Test (Priority = 1, enable = True ) public static void SecondTest () {system.out.println ('Đây là Test Case số 1 vì Mức độ ưu tiên số 1')} @Test (enable = false) public static void SkippedTest () {system.out.println ( 'Đây là Trường hợp kiểm tra bị bỏ qua vì tính năng này đã bị vô hiệu hóa')} @Test (bật = True) public static void FinalTest () {system.out.println ('Đây là Trường hợp kiểm tra cuối cùng, được bật và không có Mức độ ưu tiên ')}

Phương pháp phụ thuộc

Bây giờ, trong trường hợp bạn gặp phải tình huống trong đó, bạn muốn một đoạn mã chỉ được thực thi khi nó thỏa mãn một điều kiện hoặc chỉ khi một phương thức cụ thể thực thi thành công, thì chúng ta có thể làm điều đó bằng cách sử dụng dependOnMethod (). Về cơ bản, đây là một điều kiện phụ thuộc phương thức, nơi một phương thức sẽ được thực thi tùy thuộc vào phương thức khác. Nếu chúng tôi bổ sung thiết lập luôn luôn chạy thuộc tính true, khi đó phương thức sẽ được thực thi bất kể điều kiện fail / pass của phương thức phụ thuộc. Nhìn vào mã trong đoạn mã dưới đây.

@Test public static void FirstTest () {system.out.println ('Đây là Test Case đầu tiên được thực thi')} @Test (dependOnMethods = {'FirstTest'}) public static void SecondTest () {system.out. println ('Đây là Test Case thứ hai được thực thi. Đây là một phương pháp Phụ thuộc')} @Test (dependOnMethods = {'SecondTest'}) public static void FinalTest () {system.out.println ('Đây là Test cuối cùng Case Nó vẫn sẽ được thực thi. ')}

Bây giờ, điều này đưa chúng ta đến một khía cạnh quan trọng khác trong thử nghiệmchú thích là Phân nhóm .

hàm power trong java cho số nguyên

Phân nhóm

Bây giờ bạn phải biết rằng sẽ có một số phương pháp như một phần của trường hợp thử nghiệm của chúng tôi trong mã. Giả sử có 100 trường hợp thử nghiệm nhưng chúng tôi chỉ muốn thực hiện 20 trường hợp thử nghiệm trong thử nghiệm tiếp theo của mình. Bạn có nghĩ rằng chúng tôi có thể làm điều đó? Chắc chắn chúng tôi có thể.

Chúng ta có thể sử dụng các nhóm cho mục đích này. Chúng ta có thể gán tên nhóm cho một số trường hợp thử nghiệm và sau đó chọn thực thi nhóm thay vì toàn bộ mã. Hãy xem đoạn mã dưới đây để hiểucách tạo nhóm.

@Test (groups = {'MyGroup'}) public static void FirstTest () {system.out.println ('Đây là một phần của Nhóm: MyGroup')} @Test (groups = {'MyGroup'}) public static void SecondTest () {system.out.println ('Đây cũng là một phần của Nhóm: MyGroup')} @Test public static void ThirdTest () {system.out.println ('Nhưng, đây không phải là một phần của Nhóm: MyGroup ')}

Xác định TestNG

Điều này bây giờ đưa chúng ta đến chủ đề tiếp theo trong TestNG, đó là các khẳng định. Như tên cho thấy, các xác nhận có thể được sử dụng trong các phương pháp kiểm tra để xác định điều kiện đạt / không đạt của một bài kiểm tra. Dựa trên điều kiện đúng / sai của một câu lệnh, các bài kiểm tra sẽ đạt / không đạt.

Trong đoạn mã dưới đây, tôi đã bao gồm 3 phương pháp kiểm tra, trong đó phương pháp thứ nhất và thứ ba có điều kiện đạt và phương pháp thứ hai sẽ có điều kiện không đạt. Xem mã cho chính mình.

package testng import org.testng.annotations.Test import org.testng.annotations.BeforeMethod import org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.testng.Assert import org.testng.annotations.AfterMethod public class Assertions {@BeforeMethod public void beforeMethod () {System.setProperty ('webdriver.gecko.driver', 'C: UsersVardhanworkspaceSeleniumProjectfilesgeckodriver.exe')} public boolean isEqual (int a, int b) {if (a == b ) {return true} else {return false}} @Test public void testEquality1 () {Assert.assertEquals (true, isEqual (10, 10)) System.out.println ('Đây là điều kiện vượt qua')} @Test public void testEquality2 () {Assert.assertEquals (true, isEqual (10, 11)) System.out.println ('Đây là điều kiện thất bại')} @Test public void getTitle () {WebDriver driver = new FirefoxDriver () driver. get ('https://www.gmail.com') String title = driver.getTitle () Assert.assertEquals (title, 'Gmail') System.out.println ('Đây lại là một điều kiện vượt qua')} }

Khi bạn nhìn vào báo cáo được tạo sau lần thực thi này, bạn sẽ nhận thấy rằng trong số ba bài kiểm tra, một bài kiểm tra không thành công và hai bài kiểm tra đạt. Một điểm quan trọng khác cần lưu ý là khi một xác nhận không thành công, các lệnh / dòng mã khác trong bài kiểm tra đó sẽ bị bỏ qua. Chỉ khi xác nhận thành công, dòng mã tiếp theo sẽ được thực thi trong kiểm tra đó. Kiểm tra đầu ra bên dưới, nơi system.out.println đã thực thi chỉ cho phương thức thứ nhất và thứ ba.

1493277977348 geckodriver INFO Đang nghe trên 127.0.0.1:47035 1493277977993 mozprofile :: profile INFO Sử dụng đường dẫn cấu hình C: UsersVardhanAppDataLocalTemp ust_mozprofile.Z7X9uFdKODvi 1493277977994 geckodriver :: marionette thông tin về trình duyệt Firefox Kết nối với Marionette trên localhost: 50758 [GPU 6920] CẢNH BÁO: lỗi đường ống: 109: tệp c: / build / moz2_slave / m-rel-w32-00000000000000000000 / build / src / ipc / chromium / src / chrome / common / ipc_channel_win. cc, dòng 346 1493277981742 Marionette THÔNG TIN Đang nghe trên cổng 50758 27 tháng 4 năm 2017 12:56:22 PM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Phương ngữ được phát hiện: W3C Đây lại là điều kiện vượt qua Đây là điều kiện vượt qua ĐÃ ĐƯỢC XÁC NHẬN: getTitle PASSED: testEquality1 FAILED: testEquality2 java.lang.AssertionError: mong đợi [false] nhưng tìm thấy [true] tại org.testng.Assert.fail (Assert.java:93) tại org.testng.Assert.failNotEquals (Assert.java: 512) tại org.testng.Assert.assertE qualsImpl (Assert.java:134) tại org.testng.Assert.assertEquals (Assert.java:115) tại org.testng.Assert.assertEquals (Assert.java:304) tại org.testng.Assert.assertEquals (Assert.java : 314) tại testng.Assertions.testEquality2 (Assertions.java:38) tại sun.reflect.NativeMethodAccessorImpl.invoke0 (Phương pháp bản địa) tại sun.reflect.NativeMethodAccessorImpl.invoke (Nguồn không xác định) tại sun.reflect.DeleinvethodAnkcessorImplnk Nguồn) tại java.lang.reflect.Method.invoke (Nguồn không xác định) tại org.testng.internal.MethodInvocationHelper.invokeMethod (MethodInvocationHelper.java:108) tại org.testng.internal.Invoker.invokeMethod (Invoker.java:661) tại org.testng.internal.Invoker.invokeTestMethod (Invoker.java:869) tại org.testng.internal.Invoker.invokeTestMethods (Invoker.java:1193) tại org.testng.internal.TestMethodWorker.invokeTestMethodWorker.invokeTestMethodWorker.etjavaTest ) tại org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:109) tại org.testng.TestRunner.privateRun (TestRunner.java:744) tại org.testng.TestRu nner.run (TestRunner.java:602) tại org.testng.SuiteRunner.runTest (SuiteRunner.java:380) tại org.testng.SuiteRunner.runSequentially (SuiteRunner.java:375) tại org.testng.SuiteRunner.privateRun (SuiteRunner .java: 340) tại org.testng.SuiteRunner.run (SuiteRunner.java:289) tại org.testng.SuiteRunnerWorker.runSuite (SuiteRunnerWorker.java:52) tại org.testng.SuiteRunnerWorker.run (SuiteRunnerWorker.java:86) tại org.testng.TestNG.runSuitesSequentially (TestNG.java:1301) tại org.testng.TestNG.runSuitesLocally (TestNG.java:1226) tại org.testng.TestNG.runSuites (TestNG.java:1144) tại org.testng. TestNG.run (TestNG.java:1115) tại org.testng.remote.AbstractRemoteTestNG.run (AbstractRemoteTestNG.java:132) tại org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.java:230) tại org.testng.remote .RemoteTestNG.main (RemoteTestNG.java:76) ========================================= ======== Kiểm tra mặc định Kiểm tra chạy: 3, Không đạt: 1, Bỏ qua: 0 ================================= ======================================================= ================ Bộ mặc định Tổng số lần chạy thử nghiệm: 3, Thất bại: 1, Số lần bỏ qua: 0 =================================== ============

Vì vậy, đó là phần cuối của các khái niệm liên quan đến quản lý trường hợp thử nghiệm. Chúng tôi còn lại với một chủ đề nữa, đó là tạo báo cáo. Tạo báo cáo là chủ đề cuối cùng trong hướng dẫn Selenium WebDriver này vì báo cáo chỉ có thể được tạo sau khikiểm tra được thực hiện.

rmi trong java là gì

Tạo báo cáo

Điều quan trọng nhất bạn cần lưu ý là báo cáo sẽ chỉ được tạo qua tệp .xml. Điều này có nghĩa là, có thể là một phương thức, hoặc là một lớp, hoặc là một nhóm mà bạn muốn kiểm tra, tất cả chúng đều phải được chỉ định trong tệp .xml.

Vì vậy, trước tiên bạn có thể tạo một thư mục mới trong dự án của mình và tạo một tệp mới bên trong thư mục đó và đặt tên cho tệp và lưu nó với phần mở rộng .xml. Bạn có thể tạo thư mục và tệp mới bằng cách nhấp chuột phải vào trình khám phá gói. Khi bạn đã tạo tệp, hãy chuyển đến tab nguồn từ cuối cửa sổ và nhập các cấu hình như được chỉ định trong đoạn mã bên dưới.

 

Dòng đầu tiên là định nghĩa kiểu tài liệu XML. Đây là tiêu chuẩn và bắt buộc đối với tất cả các báo cáo thử nghiệm. Tuy nhiên, những dòng khác khá tự giải thích. Tôi đã sử dụng các thẻ mở cho suite, test, class và class. Thẻ lớp có thể có một hoặc nhiều lớp bên trong nó. Do đó, nó có thể được sử dụng nếu chúng ta muốn tạo một báo cáo trong đó chúng ta đang thử nghiệm nhiều lớp. Điều này đặc biệt hữu ích cho các nhà phát triển muốn kiểm tra một đoạn mã dài.

Dù sao thì quay lại báo cáo của chúng tôi, bạn có thể đặt tên cho từng bộ hoặc bài kiểm tra hoặc lớp sau khi mở các thẻ đó và nhớ đóng mọi thẻ bạn mở. Tôi đã đặt tên căn hộ của mình là TestNGs , tên thử nghiệm là Kiểm tra Chú thích và tên lớp là testng.TestAnnotations. Xin lưu ý rằng tên lớp ở định dạng ' packagename.classname ' .

Khi bạn chạy tệp này dưới dạng bộ TestNG, quá trình thực thi sẽ bắt đầu và bạn sẽ nhận được các báo cáo kiểm tra chi tiết. Bạn sẽ nhận được đầu ra thử nghiệm trong tab bảng điều khiển của mình và kết quả của bộ thử nghiệm trong tab tiếp theo. Báo cáo mà tôi đã tạo để thực thi mã của mình làtrongảnh chụp màn hình bên dưới. Bạn sẽ nhận thấy rằng lần này, có một tên bộ, tên thử nghiệm, tên lớp cùng với thời gian thực hiện mỗi tên trong số chúng.

Trong trường hợp bạn muốn xem báo cáo HTML (Báo cáo chỉ mục hoặc Báo cáo có sẵn), bạn có thể chuyển đến kiểm tra đầu ra thư mục bên trong thư mục dự án trong không gian làm việc của bạn. Bằng cách nhấp vào chúng, bạn có thể xem các báo cáo ngay cả sau đó. Dưới đây là ảnh chụp màn hình của họ.

Báo cáo chỉ mục : -

Báo cáo có sẵn : -

Vì vậy, chúng ta sẽ đến phần cuối của blog hướng dẫn Selenium WebDriver này. Đã đến lúc bạn phải thiết lập eclipse ở cuối, cài đặt các gói Selenium khác nhau, cài đặt TestNG và bắt đầu viết các trường hợp thử nghiệm của mình.

Bạn có thể xem video hướng dẫn Selenium WebDriver dưới đây để chứng kiến ​​phần trình bày về các khái niệm khác nhau được giải thích trong blog này.

Đào tạo Selenium | Khung TestNG cho Selenium | Edureka

Video Đào tạo về Selenium của Edureka này sẽ đưa bạn qua các chi tiết chuyên sâu về Selenium WebDriver. Video hướng dẫn về Selenium này lý tưởng cho cả người mới bắt đầu và các chuyên gia muốn tìm hiểu cơ bản về các lệnh WebDriver và tìm hiểu cách TestNG có thể được sử dụng với Selenium để quản lý các trường hợp thử nghiệm khác nhau.

Nếu bạn muốn tìm hiểu về Selenium và xây dựng sự nghiệp trong lĩnh vực thử nghiệm, hãy xem trực tuyến, tương tác của chúng tôi ở đây, đi kèm với hỗ trợ 24 * 7 để hướng dẫn bạn trong suốt thời gian học tập của bạn.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.