More

    Giới thiệu về Ensure trong Serenity Screenplay

    Trong phiên bản gần đây của Serenity Screenplay hỗ trợ chúng ta cách assertions với class Ensure. Cách này, được nhiều người đánh giá là dễ sử dụng và viết nhanh hơn. Trong bài này chúng ta cùng tìm hiểu về Ensure trong Serenity Screenplay.

    Lưu ý: trước khi sử dụng Ensure trong Serenity Screenplay, bạn cần viết được kịch bản đầu tiên với Serenity.

    Giới thiệu về Serenity Ensure

    Trong quá trình thực hiện kịch bản, bạn cần xác định được kết actual và expect. Để thực hiện hành động, kiểm tra xem kết quả actual bạn nhận được so sánh với kết quả bạn mong đợi expect. Trong Serenity Screenplay hỗ trợ cho bạn class Ensure để dễ dàng sử dụng.

    Class Ensure đã tạo một Performable (Performable class được dùng thực hiện thành động). Do đó, bạn có thể tích hợp trực tiếp vào method attemptsTo() ở trong kịch bản mà không cần tạo thêm Class khác.

    Việc sử dụng class Ensure để assertion cũng giúp code của bạn trở lên dễ đọc hơn, gần giống như một câu văn.

    Hãy xem ví dụ dưới đây:

    • Trong kịch bản này, ta có một actor là Sam.
    • sam.attemptsTo -> Sam có khả năng thực hiện những hành động ở trong khối của attemptsTo()
    • Enter.theValue("40").into(AGE_FIELD).thenHit(Keys.ENTER) -> actor Sam thực hiện điền giá trị “40” vào trường AGE_FIELD. Sau đó ấn nút Enter.
    • Ensure.that(AGE).text().isEqualTo("40") -> Sử dụng class Ensure để xác nhận xem rằng giá trị AGE đó có thật sự bằng 40
    • Kết quả sẽ được trả về là True hoặc False. Nếu AGE có giá trị bằng 40 -> kết quả trả về true. Nếu AGE có giá trị khác 40 -> kết quả trả về là false
    sam.attemptsTo(
        Enter.theValue("40").into(AGE_FIELD).thenHit(Keys.ENTER),
        Ensure.that(AGE).text().isEqualTo("40")
    );

    Cách thêm Serenity Ensure vào project

    Require: Bạn đã viết kịch bản automation test đầu tiên với Serenity Screenplay

    Trong bài viết mình sử dụng Maven và Gradle.

    Bước 1: Serenity Ensure cần thêm dependency vào project. Trong Maven, bạn thêm serenity-ensure dependency vào trong file pom.xml

    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-ensure</artifactId>
        <version>${serenity.version}</version>
        <scope>test</scope>
    </dependency>

    Để cập nhật phiên bản mới nhất của Ensure. Bạn vào Maven Repository

    Tìm kiếm từ khóa Ensure Serenity, chọn kết quả đầu tiên là Serenity Ensure

    Tìm kiếm ensure serenity ở maven repository
    Tìm kiếm ensure serenity ở maven repository

    Sau đó sẽ hiển thị một danh sách các phiên bản. Version đầu tiên là phiên bản mới nhất.

    Danh sách các phiên bản Serenity Ensure
    Danh sách các phiên bản Serenity Ensure

    Sau đó bạn copy phần Maven dependency vào project của bạn.

    Serenity Ensure maven dependency
    Serenity Ensure maven dependency

    Bước 2: Trong Gradle, bạn cần thêm dependency

    testCompile "net.serenity-bdd:serenity-screenplay-webdriver:${serenity.version}"
    

    Một số phương thức Ensure assertion hay sử dụng

    Gần như tất cả các phương thức Ensure được bắt đầu với Ensure.that() . Hãy cùng tìm hiểu một số phương thức hay dùng của Ensure Serenity.

    Khi sử dụng một số IDE như IntelliJ IDEA. Bạn có thể dễ dàng sử dụng với gợi ý của IDE, sau khi đã thêm thành công Ensure dependency.

    1. Assertion với số
    isEqualToEnsure.that(age).isEqualTo(18)
    isNotEqualToEnsure.that(age).isNotEqualTo(65)
    Ví dụ assertion với số

    Ngoài ra, với kiểu dữ liệu double và float. Bạn có thể sử dụng phương thức isCloseTo() để assert

    isCloseTo()Ensure.that(creditScore).isCloseTo(9.81F, 0.01F)
    Ví dụ assertion với kiểu dữ liệu float và double
    2. Assertion với String
    isEqualToEnsure.that(name).isEqualTo("Bill")
    isNotEqualToEnsure.that(name).isNotEqualTo("Joe")
    Ví dụ assertion với String

    Một số trường hợp cần assert với nội dung của String ta có một số cách sau:

    doesNotContainEnsure.that(colors).doesNotContain("cyan")
    isBlank()Ensure.that(" ").isBlank()
    contains()Ensure.that(colors).contains("Green")
    isEmpty()Ensure.that("").isEmpty()
    Ví dụ assertion với String content
    3. Assertion với các element ở web

    Khi viết các kịch bản liên quan đến UI, chúng ta cần assert một số thông tin của element. Sưr dụng Ensure giúp ta viết nhanh hơn.

    Một số assert đơn giản nhất là assert về hiển thị hay được sử dụng:

    isDisplayedEnsure.that(FIRST_NAME).isDisplayed()
    isDisabledEnsure.that(FIRST_NAME).isDisabled()
    isEnabledEnsure.that(FIRST_NAME).isEnabled()
    Ví dụ assertion hiển thị với web element

    Hoặc một số trường hợp assert về thông tin

    valueEnsure.that(FIRST_NAME).value().isEqualTo("Joe")
    textEnsure.that(DESCRIPTION).text().isNotEmpty()
    selectedValueEnsure.that(COLORS).selectedValue().isEqualTo("green")
    Ví dụ assertion thông tin với web element

    Ngoài những assertion mình viết trên, vẫn còn rất nhiều các phương thức khác. Trong từng trường hợp sử dụng assert khác nhau. Hãy đọc thêm tại The Serenity BDD Book.

    Chúc các bạn thực hiện thành công!

    Tham khảo tại: The Serenity BDD Book

    Recent Articles

    Related Stories

    BÌNH LUẬN

    Vui lòng nhập bình luận của bạn
    Vui lòng nhập tên của bạn ở đây