Là gì Cucumber Định nghĩa tệp & bước tính năng? (Ví dụ)
⚡ Tóm tắt thông minh
Cucumber Các tệp tính năng mô tả hành vi bằng ngôn ngữ Gherkin đơn giản, trong khi các định nghĩa bước chứa mã thực thi từng dòng. Mỗi Cucumber Dự án cần cả hai, được lưu trữ trong một cấu trúc thư mục cố định bên dưới thư mục features.
Đối với mỗi dự án Cucumber, sẽ có một thư mục duy nhất ở thư mục gốc của dự án có tên là “features”. Đây là nơi chứa tất cả các tính năng của Cucumber. Trong thư mục này, bạn sẽ tìm thấy các thư mục con khác, đó là thư mục step_definition và support.
Bố cục đó rất quan trọng, bởi vì Cucumber Hệ thống tự động tìm kiếm các tập tin của bạn theo quy ước chứ không phải theo cấu hình. Một tập tin tính năng nằm ngoài thư mục features sẽ không bao giờ được đọc.
"Tệp tính năng" là gì?
Tệp tính năng chứa mô tả cấp cao của Kịch bản thử nghiệm Nói một cách đơn giản, nó được biết đến như là... GherkinGherkin là một ngôn ngữ văn bản tiếng Anh đơn giản.
Cucumber Tệp tính năng bao gồm các thành phần sau:
- Tính năng: Một tính năng sẽ mô tả tập lệnh kiểm thử hiện tại phải được thực thi.
- Kịch bản: Kịch bản mô tả các bước và kết quả mong đợi cho một trường hợp thử nghiệm cụ thể.
- Tóm tắt kịch bản: Có thể thực thi cùng một kịch bản cho nhiều bộ dữ liệu bằng cách sử dụng phác thảo kịch bản. Dữ liệu được cung cấp bởi cấu trúc dạng bảng được phân tách bằng (II).
- Được: Nó chỉ định bối cảnh của văn bản sẽ được thực thi. Bằng cách sử dụng bảng dữ liệu “Đã cho”, bước cũng có thể được tham số hóa.
- Thời Gian: "Khi" chỉ định hành động kiểm thử cần thực hiện.
- Sau đóKết quả dự kiến của bài kiểm tra có thể được biểu thị bằng từ “Sau đó”.
Mỗi tập tin chứa một Tính năng. Các kịch bản bên dưới là những ví dụ cụ thể minh họa cho tính năng đó, và mỗi kịch bản đều tuân theo cùng một trình tự: mô tả bối cảnh ban đầu, mô tả một sự kiện, mô tả kết quả mong đợi.
Tiếp theo, chúng ta sẽ học cách viết Feature File trong Cucumber với ví dụ.
Ví dụ về tệp tính năng mẫu:
Ví dụ gốc được đăng kèm theo hướng dẫn này được sao chép lại bên dưới chính xác như đã viết.
Feature: Visit career guide page in career.guru99.com Scenario: Visit career.guru99.com Given: I am on career.guru99.com When: I click on career guide menu Then: I should see career guide page
⚠️ Đính chính: Ví dụ trên đặt dấu hai chấm sau Được, Thời Gian và Sau đóGherkin đặt dấu hai chấm sau dấu hai chấm. Tính năng và Kịch bản Chỉ vậy thôi. Từ khóa "step" theo sau bởi dấu hai chấm không được phân tích cú pháp như một bước, vì vậy Cucumber Nó âm thầm bỏ qua dòng đó. Tệp đã được sửa có nội dung như sau.
Feature: Visit career guide page in career.guru99.com Scenario: Visit career.guru99.com Given I am on career.guru99.com When I click on career guide menu Then I should see career guide page
Trình phân tích cú pháp không yêu cầu thụt lề, nhưng hai dấu cách trên mỗi cấp độ là kiểu thông thường và giúp việc quét một đối tượng dài dễ dàng hơn nhiều. Hình ảnh động bên dưới cho thấy quá trình chạy một tệp đối tượng và mỗi bước được chuyển sang màu xanh lá cây khi hoàn thành.
"Định nghĩa bước" là gì?
Định nghĩa bước ánh xạ các Bước kiểm thử trong các tệp tính năng (được giới thiệu bởi Given/When/Then) tới mã. Nó thực thi các bước trên Ứng dụng đang được thử nghiệm và kiểm tra kết quả so với kết quả mong đợi. Để thực thi định nghĩa bước, nó phải khớp với thành phần đã cho trong một tính năng. Định nghĩa bước được xác định trong các tệp Ruby trong “features/step_def địnhs/*_steps.rb”.
Việc đối sánh chỉ dựa trên nội dung văn bản của bước đó. Cucumber Nó không tính đến từ khóa khi tìm kiếm định nghĩa, đó là lý do tại sao hai bước trong cùng một bộ quy tắc có thể không bao giờ có văn bản giống hệt nhau ngay cả khi một bước là "Given" và bước kia là "Then".
Ví dụ về định nghĩa bước: Ở đây chúng ta sẽ sử dụng ở trên Cucumber Ví dụ về Feature File khi duyệt trang career.guru99.com. Chúng ta sẽ sử dụng các tính năng như “When, Then, Given” như hình bên dưới. Cucumber Ví dụ về tệp tính năng.
Step 1: Given (/^ I am on career.guru99.com$/) do Browser.goto "http://career.guru99.com" -This will visit career.guru99 on browser end Step 2: When (/^ click on career guide menu$/) do Browser.text (:name, " career guide" ).click – This will click "career guide menu" end Step 3: Then (/^ I should see career guide page$/) do Browser.goto "http://career.guru99.com/category/career-guide/" - It will visit "career guide page" end
⚠️ Lưu ý về ngôn ngữ: Các định nghĩa ở trên là của Ruby, đó là nơi mà... Cucumber đã bắt đầu và đó là lý do tại sao thư mục được đặt tên như vậy. step_definitions và các tệp kết thúc bằng _steps.rbCùng một tập tin tính năng điều khiển các định nghĩa bước được viết trong Java, JavaKịch bản, Python hoặc C# mà không cần thay đổi bất kỳ chi tiết nào trong Gherkin. Trong Cucumber- Trong JVM, biểu thức chính quy được chuyển thành chú thích trên một phương thức:
@Given("I am on career.guru99.com") public void i_am_on_the_career_page() { driver.get("http://career.guru99.com"); }
Dù bạn chọn ngôn ngữ nào, định nghĩa bước là nơi duy nhất chứa các chi tiết triển khai. Giữ vững lập trường.ping Các bộ chọn và lệnh gọi HTTP từ tệp tính năng cho phép người không phải lập trình viên đọc hiểu kịch bản. Thành phố điện khí hóa phía tây dãy núi Rocky đầu tiên Cucumber kịch bản Hướng dẫn này sẽ xây dựng sự kết hợp này từ đầu đến cuối.
Tóm tắt kịch bản và ví dụ trong tệp tính năng
Việc sao chép một kịch bản ba lần để thay đổi một giá trị là cách phổ biến nhất khiến tệp dữ liệu tính năng trở nên không thể đọc được. Tóm tắt kịch bản thay thế các bản sao bằng một mẫu và một Các ví dụ Bảng này cung cấp các giá trị.
Các tham số được viết trong dấu ngoặc nhọn và phải khớp với tiêu đề cột trong bảng bên dưới chúng. Cucumber Nó thay thế các giá trị trước khi tìm kiếm định nghĩa bước phù hợp, vì vậy bản thân các định nghĩa không cần xử lý đặc biệt.
Scenario Outline: Search the career guide Given I am on career.guru99.com When I search for "<keyword>" Then I should see the <section> section Examples: | keyword | section | | interview | Interview Tips| | resume | Resume Guide |
Có một vài điểm cần nhớ khi sử dụng dàn ý:
- Cấu trúc chương trình chỉ chạy một lần cho mỗi hàng dữ liệu. Hàng đầu tiên là tiêu đề và không bao giờ được thực thi.
- Phần Tóm tắt Kịch bản phải được theo sau bởi ít nhất một phần Ví dụ, nếu không thì chương trình sẽ không hoạt động.
- Các đường ống trong bảng không cần phải thẳng hàng, mặc dù việc căn chỉnh chúng giúp tệp dễ đọc hơn.
- Hãy giữ cho bảng nhỏ gọn. Một bảng có ba mươi hàng thường là dấu hiệu cho thấy dữ liệu đó nên được lưu trữ trong một bảng khác. kiểm thử dựa trên dữ liệu thay thế.
Bối cảnh, Và, Nhưng và các từ khóa khác của Gherkin
Ngoài sáu thành phần đã nêu ở trên, Gherkin còn có một số từ khóa giúp cho các tệp tính năng dài hơn dễ đọc hơn.
- Tiểu sử — một khối các bước Given chạy trước mỗi kịch bản trong tính năng. Nó giúp loại bỏ việc lặp lại việc viết cùng một điều kiện tiên quyết ở đầu mỗi kịch bản.
- và và Nhưng — là các từ thay thế cho cấu trúc "Given", "When" hoặc "Then" lặp đi lặp lại. Chúng dễ đọc hơn và hoạt động giống hệt nhau; Cucumber Các bước khớp nhau trong văn bản dù thế nào đi nữa.
- Quy tắc — một nhóm tùy chọnping, được thêm vào trong Gherkin 6, tập hợp các kịch bản minh họa cho một quy tắc kinh doanh.
- Chuỗi tài liệu — một khối văn bản được bao quanh bởi ba dấu ngoặc kép, được truyền vào định nghĩa bước dưới dạng một đối số duy nhất khi một dòng không đủ.
- Bảng dữ liệu — Các hàng được phân tách bằng dấu gạch dọc, được gắn vào một bước duy nhất, dùng để truyền một danh sách các giá trị cho bước đó.
- Tags — Các nhãn bắt đầu bằng dấu @, được đặt phía trên một Tính năng hoặc Kịch bản để có thể chọn một tập hợp con trong quá trình chạy.
- Nhận xét — một dòng bắt đầu bằng dấu thăng. Chú thích chỉ được phép ở đầu dòng và Gherkin không có khối chú thích.
Tóm lại, một tệp tính năng với thiết lập dùng chung sẽ trông như thế này:
Feature: Career guide navigation Background: Given I am on career.guru99.com Scenario: Open the career guide menu Given I am signed in And my profile is complete When I click on career guide menu Then I should see career guide page But I should not see the admin panel
Những lỗi thường gặp trong file tính năng và cách khắc phục chúng
Hầu hết Cucumber Các vấn đề mà người mới bắt đầu báo cáo không phải là lỗi của framework. Chúng chỉ là những vi phạm nhỏ đối với các quy tắc của Gherkin và gây ra lỗi âm thầm.
| Sai lầm | Điều gì xảy ra | Sửa chữa |
|---|---|---|
| Dấu hai chấm sau Given, When hoặc Then | Đường kẻ đó không được nhận diện là một bước và bị bỏ qua. | Chỉ sử dụng dấu hai chấm sau Feature và Scenario. |
| Hai bước với văn bản giống hệt nhau | Cucumber coi chúng là bản sao vì từ khóa bị bỏ qua. | Sửa lại câu chữ ở một bước để hai câu có nghĩa khác nhau. |
| Tệp tính năng nằm ngoài thư mục tính năng. | Tệp tin không bao giờ được tìm thấy và không có lần chạy thử nào. | Giữ mọi thứ .feature tệp nằm trong thư mục tính năng |
| Mười lăm bước trong một kịch bản | Tình huống này không còn hoạt động như tài liệu nữa. | Hãy đặt mục tiêu từ ba đến năm bước và đưa ra chi tiết cụ thể trong phần mô tả từng bước. |
| Sau đó, thực thi một hàng trong cơ sở dữ liệu. | Bài kiểm tra thành công mặc dù hành vi hiển thị cho người dùng bị lỗi. | Khẳng định dựa trên kết quả đầu ra có thể quan sát được, chẳng hạn như trang hoặc phản hồi. |
| Sơ lược kịch bản (không kèm bảng ví dụ) | Mẫu này không bao giờ được thực thi. | Thêm phần Ví dụ ngay bên dưới phần dàn ý. |
Khắc phục những lỗi này trước khi bộ ứng dụng phát triển sẽ tiết kiệm chi phí hơn nhiều so với việc khắc phục sau đó, bởi vì mọi kịch bản được viết trong thời gian đó đều sao chép cùng một cấu trúc. Sau khi các tập tin tính năng hoạt động đúng cách, bước tiếp theo là kết nối dự án — xem phần tiếp theo. Cucumber cài đặt hướng dẫn và phạm vi rộng hơn kiểm tra tự động hóa series.

