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
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.
Sau đó bạn copy phần Maven dependency vào project của bạn.
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ố
isEqualTo | Ensure.that(age).isEqualTo(18) |
isNotEqualTo | Ensure.that(age).isNotEqualTo(65) |
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) |
2. Assertion với String
isEqualTo | Ensure.that(name).isEqualTo("Bill") |
isNotEqualTo | Ensure.that(name).isNotEqualTo("Joe") |
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:
doesNotContain | Ensure.that(colors).doesNotContain("cyan") |
isBlank() | Ensure.that(" ").isBlank() |
contains() | Ensure.that(colors).contains("Green") |
isEmpty() | Ensure.that("").isEmpty() |
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:
isDisplayed | Ensure.that(FIRST_NAME).isDisplayed() |
isDisabled | Ensure.that(FIRST_NAME).isDisabled() |
isEnabled | Ensure.that(FIRST_NAME).isEnabled() |
Hoặc một số trường hợp assert về thông tin
value | Ensure.that(FIRST_NAME).value().isEqualTo("Joe") |
text | Ensure.that(DESCRIPTION).text().isNotEmpty() |
selectedValue | Ensure.that(COLORS).selectedValue().isEqualTo("green") |
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