Tech

TestNG Include, Exclude với ví dụ trong Selenium

TestNG là một Testing framework  bao gồm các loại thiết kế thử nghiệm khác nhau như unit, functional, end to end, UI và thử nghiệm tích hợp.

Bạn có thể chạy một hoặc nhiều gói (gói ở đây có nghĩa là đóng gói một nhóm class theo định dạng director thích hợp) bằng cách tạo XML và chạy nó thông qua codeven.

Group TestNG với Ví dụ

Chúng tôi sử dụng các nhóm trong Testng khi,

  • Chúng tôi không muốn xác định các phương pháp kiểm tra một cách riêng biệt trong các class khác nhau (tùy thuộc vào chức năng) và
  • Đồng thời muốn bỏ qua (không thực thi) một số trường hợp kiểm thử như thể chúng không tồn tại trong code.
  • Vì vậy, để thực hiện điều này, chúng ta phải Nhóm chúng lại. Điều này được thực hiện bằng cách sử dụng cơ chế “bao gồm” và “loại trừ” được hỗ trợ trong testNG.

Trong ví dụ dưới đây, chúng tôi đã chỉ ra cú pháp của cách sử dụng các nhóm trong tệp XML.

@Test (groups = {“bonding”, “strong_ties”})

Ở đây chúng tôi đang sử dụng 2 tên nhóm tức là “liên kết” và “strong_ties” (đây là những tên hợp lý có thể được thay đổi theo ý muốn của bạn).

Thẻ <groups> xác định sự bắt đầu của các nhóm trong XML.

Tùy chỉnh XML của bạn để chọn nhóm được đề cập từ các  test classes. Dưới đây được đề cập là cú pháp của cách khai báo các nhóm trong tệp XML, ví dụ:

<groups>  

   <run>  

    <include name = “bonding” />  

   </run>  

  </groups>

Vì vậy, chúng ta hãy giả sử rằng có 10 phương pháp kiểm tra trong một class.

Trong số họ,

  • 6 phương pháp được gắn thẻ trong nhóm “liên kết” và
  • 4 người trong nhóm “strong_ties”

Tiếp theo, chúng ta sẽ thiết lập đường dẫn codeven / Java và sử dụng IDE Eclipse để chứng minh việc sử dụng các nhóm sử dụng tệp XML trong dự án codeven dựa trên Java .

Đặt đường dẫn codeven và Java trong biến môi trường (dành cho người dùng windows)

Vui lòng tham khảo https://www.guru99.com/codeven-jenkins-with-selenium-complete-tutorial.html

https://www.guru99.com/install-java.html

Giới thiệu về XML và cách tạo tệp XML

  • Tệp XML (Ngôn ngữ Đánh dấu Có thể Mở rộng) trong framework  codeven chứa thông tin của một hoặc nhiều bài kiểm tra và được xác định bởi thẻ <suite> .
  • Thông tin kiểm tra trong XML được đại diện bởi thẻ <test> và có thể chứa một hoặc nhiều class TestNG.
  • Một class Java có chứa chú thích @Test ở trên các phương thức kiểm tra được định nghĩa là các phương thức TestNG.

Nhiều thẻ được sử dụng theo một trình tự để tạo một bài kiểm traNG xml đang hoạt động như <suite>, <test> và <class>

  • Đầu tiên là thẻ <suite>, giữ một tên logic xác định thông tin đầy đủ để testNG được báo cáo để tạo báo cáo thực thi.
  • Thứ hai là <test name = “Guru 99 Smoke Test Demo”>, lưu ý rằng đó là tên hợp lý chứa thông tin của báo cáo thực thi thử nghiệm như đạt, không đạt, bỏ qua các trường hợp thử nghiệm và các thông tin khác như tổng thời gian thực hiện và thông tin nhóm
  • Thứ ba là <class name = ” com.group.guru99.TC_Class1 ” />, com.group.guru99 là gói được sử dụng và tên class kiểm tra là TC_Class1.

<?xml version=”1.0″ encoding=”UTF-8″ ?>

<!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd”>

  <suite name=”Suite“>

<test name=”Guru 99 Smoke Test Demo“>

<groups>

<run>

    <include name=”strong_ties” />

         </run>

        </groups>

<classes>

<class name=”com.group.guru99.TC_Class1” />

            </classes>

</test>

  </suite>

Chúng tôi sẽ sử dụng XML này cho các video sắp tới.

Một cơ chế khác thay vì Nhóm là “loại trừ” hoặc “bao gồm” trong XML thử nghiệm

Giả sử bạn đang tìm cách sử dụng cơ chế nhóm phức tạp thì testNG XML tạo điều kiện cho chức năng loại trừ / bao gồm một bài kiểm tra.

Exclude Tag:  Syntax for exclude tag <exclude name=”${TEST_CASE_NAME}” />

Include Tag:  Syntax for include tag <include name=”${TEST_CASE_NAME}” />

Lưu ý: Chúng tôi có thể bao gồm / loại trừ nhiều trường hợp thử nghiệm cùng một lúc và nó cũng hoạt động với Groups.

Cách chạy code bằng tệp XML (video demo)

Giải thích về code Java và XML với nhóm, loại trừ và bao gồm thẻ trong XML.

Tình huống : Khởi chạy trang web Ngân hàng demo Guru99, xác minh một số điều trên trang đăng nhập sau đó nhập thông tin đăng nhập và xác minh lại một số điều mới trên ứng dụng khi đăng nhập.

Lưu ý : Mỗi bước code bạn viết code phải được khai báo trong các phương thức riêng biệt, nhưng khi được thực thi, nó sẽ thực thi các phương thức kiểm tra tùy thuộc vào các mục trong tệp XML.

Phương pháp 1 : Khởi tạo Trình duyệt và khởi chạy URL (tc01LaunchURL ())

Phương pháp 2 : Xác minh Tiêu đề Trang Đăng nhập (tc02VerifyLaunchPage ())

Phương pháp 3 : Nhập userName và Password vào biểu codeu đăng nhập (tc03EnterCredentials ())

Phương pháp 4 : Xác minh sự hiện diện của ID người quản lý trên Trang tổng quan người dùng (tc04VerifyLoggedInPage ())

Phương pháp 5 : Xác minh thêm một số liên kết trên Bảng điều khiển người dùng (tc05VerifyHyperlinks ())

code cho kịch bản của chúng tôi:

package com.group.guru99;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.Assert;

import org.testng.annotations.Test;

public class TC_Class1 {

    public static final WebDriver webDriver = new FirefoxDriver();;

    String launchPageHeading = “//h3[text()=’Guru99 Bank’]”;

    final String userName_element = “//input[@name=’uid’]”, password_element = “//input[@name=’password’]”,

            signIn_element = “//input[@name=’btnLogin’]”;

    final String codenagerID = “//td[contains(text(),’codenger Id’)]”;

    final String newCustomer = “//a[@href=’addcustomerpage.php’]”, fundTransfer = “//a[@href=’FundTransInput.php’]”;

    /**

     * This test case will initialize the webDriver

     */

    @Test(groups = { “bonding”, “strong_ties” })

    public void tc01LaunchURL() {

        webDriver.codenage().window().codeximize();

        webDriver.codenage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

        webDriver.get(“http://www.demo.guru99.com/V4/”);

    }

    /**

     * Will check the presence of Heading on Login Page

     */

    public void tc02VerifyLaunchPage() {

        Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),

                “Home Page heading is not displayed”);

        System.out.println(“Home Page heading is displayed”);

    }

    /**

     * This test case will enter User name, password and will then click on

     * signIn button

     */

    @Test(groups = { “bonding”, “strong_ties” })

    public void tc03EnterCredentials() {

        webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);

        webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);

        webDriver.findElement(By.xpath(signIn_element)).click();

    /**

     * This test case will verify codenger’s ID presence on DashBoard

     */

    @Test(groups = { “strong_ties” })

    public void tc04VerifyLoggedInPage() {

        Assert.assertTrue(webDriver.findElement(By.xpath(codenagerID)).isDisplayed(),

                “codenager ID label is not displayed”);

        System.out.println(“codenger Id label is displayed”);

    }

    /**

     * This test case will check the presence of presence of New customer link

     * And FundTransfer link in Left pannel

     */

    @Test(groups = { “bonding” })

    public void tc05VerifyHyperlinks() {

        Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),

                “New customer hyperlink is not displayed”);

        System.out.println(“New customer hyperlink is displayed”);

        Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),

                “Fund Transfer hyperlink is not displayed”);

        System.out.println(“Fund Transfer hyperlink is displayed”);

    }

}

Xin lưu ý: Thông tin đăng nhập chỉ có hiệu lực trong 20 ngày, vì vậy nếu bạn đang cố gắng chạy code trên codey cục bộ của mình, vì vậy bạn có thể gặp phải lỗi thông tin đăng nhập không hợp lệ. Vui lòng tìm các bước dưới đây để tạo thông tin đăng nhập của bạn:

  1. Khởi chạy http://www.demo.guru99.com
  2. Nhập id ecodeil của bạn vào hộp.
  3. Nhấp vào enter và xem chi tiết đăng nhập của bạn trên coden hình.

Giải thích code:

Như đã đề cập ở trên, chúng tôi đã tạo 5 trường hợp thử nghiệm để thực hiện từng hành động trong các phương thức độc lập.

Bạn có thể thấy rằng đối với mọi phương thức, chúng tôi đã liên kết một tham số nhóm giữ một số giá trị trong đó.

Về cơ bản, đây là tên của các nhóm khác biệt, tức là “strong_ties” & “bonding”.

  • Phương thức Thứ nhất và Thứ ba được gắn thẻ “bonding”, “strong_ties” có nghĩa là nếu XML được cập nhật trong bất kỳ nhóm nào, thì Test Case này sẽ chạy.
  • Phương thức thứ hai chỉ được gắn thẻ vào nhóm “liên kết”, điều đó có nghĩa là nếu XML được cập nhật với nhóm liên kết. Chỉ trong trường hợp đó, trường hợp thử nghiệm này sẽ chạy.
  • Trường hợp thử nghiệm thứ tư được gắn thẻ vào nhóm strong_ties, có nghĩa là trường hợp thử nghiệm này sẽ chỉ chạy nếu XML được cập nhật với tên nhóm strong_ties.
  • Trường hợp thử nghiệm cuối cùng nhưng không ít thứ năm được đính kèm với nhóm liên kết, có nghĩa là trường hợp thử nghiệm này sẽ chỉ chạy nếu XML được cập nhật với tên nhóm liên kết.

Vì vậy, tổng thể, chúng tôi có 4 kịch bản;

  1. Chúng tôi muốn chạy tất cả các trường hợp thử nghiệm không phân biệt tên nhóm. Trong trường hợp này, chúng tôi sẽ xóa thẻ Nhóm khỏi chạy XML.
  2. Chúng tôi muốn chạy thử nghiệm một vài trường hợp thử nghiệm chỉ liên quan đến một trong hai nhóm tức là strong_ties hoặc liên kết
  • Xin vui lòng tham khảo:
  • Trong video này, tham số Nhóm được nhận xét từ việc chạy XML. Do đó, bạn sẽ thấy tất cả các trường hợp thử nghiệm đã được thực thi.
  • Tiếp tục với video, bây giờ chúng tôi đã bao gồm tên nhóm trong XML, bạn chỉ có thể thấy các trường hợp thử nghiệm cụ thể cho nhóm đó đang chạy.
  1. Chúng tôi đang sử dụng cơ chế Loại trừ để loại trừ trường hợp thử nghiệm:
  • Xin vui lòng tham khảo
  • Bạn thấy rằng chúng tôi đã sử dụng loại trừ một số trường hợp thử nghiệm (tc02) bằng cách viết tên của chúng khi chạy XML. Trong kết quả cuối cùng các trường hợp thử nghiệm được đề cập đã không chạy.
  1. Cuối cùng, chúng tôi đang sử dụng cơ chế kiểm tra bao gồm để bao gồm các trường hợp thử nghiệm (tc01LaunchURL, tc03EnterCredentials và tc05VerifyHyperlinks)
    • Xin vui lòng tham khảo
    • Trong video này, bạn sẽ thấy rằng các trường hợp thử nghiệm được đề cập trong XML chỉ đang chạy trong quá trình thực thi thử nghiệm.

Vui lòng tải xuống code từ URL được đề cập, nó sẽ chứa tất cả các loại testXML:
Tải xuống code trên
Sự kết luận
Ở đây chúng ta đã học được một cách tương đối mới để chạy các trường hợp kiểm thử bằng cách sử dụng XML trong dự án codeven.
Chúng tôi bắt đầu bằng cách cung cấp giới thiệu ngắn gọn về testNG và tiếp tục với đặc điểm kỹ thuật đầy đủ của các Nhóm, loại trừ và bao gồm.

Blog Tiền Điện Tử

Blog tiền điện tử công thông tin tổng hợp uy tín nhất tất cả các mảng xã hội, giáo dục , công nghệ số. Với khả năng số hóa mạnh mẽ hy vọng sẽ mang lại cho quý bạn đọc những thông tin chính xác nhất 24/24
Back to top button