Python Behave, một khung BDD, giúp viết các trường hợp thử nghiệm bằng ngôn ngữ đơn giản. Tìm hiểu, BDD là gì, cách chạy tập lệnh thử nghiệm với hành vi và tầm quan trọng của nó
Vỏ bọc Himanshu
CỐT LÕI ·Tháng 7. 15, 20 · Vùng hiệu suất · Hướng dẫnThích [14]
Bình luận
Tiết kiệm
tiếng riu ríu
9. 20 nghìn Lượt xem
Tham gia cộng đồng DZone và có được trải nghiệm thành viên đầy đủ
Tham gia miễn phíKhi công nghệ trở nên phức tạp hơn, số người thực sự hiểu về nó giảm đi. Với tự động hóa thử nghiệm Selenium, câu chuyện không quá khác biệt, các bên liên quan chính trong một dự án, với nền tảng phi kỹ thuật nhưng hiểu rõ hơn về nhu cầu của khách hàng và các trường hợp sử dụng, có thể gặp khó khăn khi đóng góp vào quy trình.
Sẽ thật tuyệt nếu những người thử nghiệm, nhà phát triển, người quản lý sản phẩm, người quản lý doanh nghiệp và các bên liên quan khác trong một dự án có thể ngồi dưới một mái nhà để khám phá các trường hợp thử nghiệm mới, câu chuyện của người dùng và lỗi để đảm bảo chất lượng sản phẩm tuyệt vời?
Chà, điều này không quá xa vời. Với Python Behave, một khung BDD [Phát triển theo hướng hành vi], được viết bằng ngôn ngữ đơn giản, bạn có thể giúp các bên liên quan dễ dàng hiểu logic trong các tập lệnh thử nghiệm.
Trong hướng dẫn Selenium Python này, tôi sẽ cung cấp cho bạn cái nhìn chi tiết về cách thực hiện tự động hóa thử nghiệm Selenium với Python Behave, một framework tự động hóa thử nghiệm dựa trên hành vi
Dưới đây là các chủ đề phụ được đề cập như một phần của hướng dẫn Selenium Python này.
BDD trong Python Behave là gì?
Behavior Driven Development [BDD] là một phần mở rộng của TDD [Test Driven Development] được sử dụng để kiểm tra trình duyệt tự động. Theo BDD, việc triển khai chức năng diễn ra ở giai đoạn sau vì các thử nghiệm phải được tạo trước. Các cuộc thảo luận và đối thoại sâu sắc tạo thành nền tảng của BDD vì tất cả các bên liên quan [kỹ thuật và phi kỹ thuật] đều hướng tới việc tạo ra các trường hợp tự động hóa thử nghiệm Selenium hiệu quả phù hợp với yêu cầu tính năng
Là nhà phát triển hoặc người thử nghiệm, bạn có thể nghi ngờ về các tình huống khi bạn cần chọn BDD thay vì TDD. TDD là lý tưởng khi một đơn vị phải được kiểm tra và bạn không muốn thực hiện kiểm tra hồi quy sớm hơn. Sự phức tạp nhân lên và việc triển khai hoạt động có thể thất bại nếu các mô-đun khác nhau được tích hợp. Đây là nơi BDD có thể được sử dụng vì nó phù hợp nhất để kiểm tra tích hợp hoặc kiểm tra hành vi
Phần tốt nhất về kiểm thử hành vi là các kiểm thử được bắt nguồn từ các tính năng và thông số kỹ thuật nghiệp vụ, không giống như các phương pháp kiểm thử khác trong đó các thông số kỹ thuật tạo thành cơ sở của mã kiểm thử. BDD đứng trên trụ cột của giao tiếp/trò chuyện hiệu quả và mọi thứ ngoài điều đó là tùy chọn
BDD cũng được coi là một biến thể khác của ATDD [Acceptance Test Driven Development];
Kịch bản thử nghiệm trong BDD
Ưu điểm chính của việc sử dụng BDD là ngôn ngữ được sử dụng để viết các kịch bản thử nghiệm về bản chất là đơn giản. Khi bạn đã hiểu sâu về việc tạo các kịch bản tự động hóa thử nghiệm Selenium, bạn có thể dễ dàng hiểu một thử nghiệm BDD được viết bằng một số khung thử nghiệm BDD khác e. g. SpecFlow, dưa chuột, v.v.
Trước khi viết kịch bản tự động kiểm tra Selenium, trước tiên các nhà phát triển phải đưa ra các câu chuyện của người dùng. Một câu chuyện người dùng tốt sẽ rất quan trọng trong việc ghi lại tính năng và thực hiện các bài kiểm tra chấp nhận
Các kịch bản trong BDD cho biết một tính năng cụ thể sẽ hoạt động như thế nào tùy thuộc vào các tham số đầu vào được cung cấp cho thử nghiệm. Bất kể khung kiểm tra BDD đang được sử dụng, định dạng tổng thể của tệp tính năng vẫn giữ nguyên
Để tạo các kịch bản, Gherkin, một ngôn ngữ dành riêng cho miền, được sử dụng để triển khai các kịch bản tự động hóa thử nghiệm Selenium. Không giống như các phương pháp thử nghiệm khác dựa trên thông số kỹ thuật, các kịch bản trong BDD dựa trên yêu cầu kinh doanh và tính năng vì chúng có thể được hiểu rõ bởi kỹ thuật cũng như đám đông phi kỹ thuật. BDD không bị hạn chế đối với Python Behave mà còn được sử dụng trong các khung khác như Cucumber để thử nghiệm Selenium
Ưu điểm của BDD
Có một số lợi ích của việc sử dụng BDD;
BDD đảm bảo rằng tất cả các bên liên quan cần thiết của dự án đều có cùng quan điểm và cùng nhau làm việc để cải thiện sản phẩm thông qua thử nghiệm
Vì các bài kiểm tra được viết bằng Gherkin i. e. một ngôn ngữ đơn giản, mọi thành viên trong nhóm đều có thể tham gia tạo thử nghiệm, vì các kịch bản tự động hóa thử nghiệm Selenium được viết bằng ngôn ngữ đơn giản trong Gherkin. Tìm hiểu thêm về phát triển theo định hướng kinh doanh với Gherkin.
Các thử nghiệm BDD có thể tái sử dụng nhiều hơn và theo mô-đun khi so sánh với các thử nghiệm TDD vì những thay đổi trong đặc tả nghiệp vụ hoặc tính năng sẽ dẫn đến những thay đổi tối thiểu trong các tính năng và kịch bản tương ứng của BDD
Khi nhấn mạnh vào đặc điểm kỹ thuật kinh doanh và tính năng, các thử nghiệm BDD có thời hạn sử dụng được cải thiện so với TDD
Kịch bản BDD và tệp tính năng trong Gherkin
Các bài kiểm tra trong BDD dựa trên các nguyên tắc 'Cho trước, Khi nào, Sau đó'. Cú pháp đơn giản hóa của Gherkin bên dưới
con trăn
x
1
Scenario: Title/Short Description
2
Given [A Precondition]
3
When [Some Event]
4
Then [Some Outcome]
5
Giả sử bạn muốn tìm kiếm LambdaTest trên công cụ tìm kiếm DuckDuckGo, tình huống thử nghiệm sẽ là,'Thực hiện tìm kiếm LambdaTest' trên DuckDuckGo và câu chuyện của người dùng sẽ bao gồm cách sử dụng lý tưởng các từ khóa Gherkin để đạt được kết quả cuối cùng
con trăn
xxxxxxxxxx
1
1
Feature: LambdaTest search
2
Scenario: Search for LambdaTest on DuckDuckGo
3
Given I am on the DuckDuckGo homepage
4
________số 85
Then Search results for LambdaTest should appear
6
Ví dụ được hiển thị ở trên trong hướng dẫn Selenium Python này sử dụng các từ khóa Gherkin được sử dụng thường xuyên nhất i. e. Đưa ra, Khi nào, và Sau đó. Thông tin chi tiết về các từ khóa đang được sử dụng ở bên dưới trong hướng dẫn Selenium Python này
Từ khóa tính năng — Cung cấp mô tả cấp cao về tính năng phần mềm
Từ khóa kịch bản — Cho biết tiêu đề của trường hợp thử nghiệm
Từ khóa đã cho — Mô tả một tập hợp các điều kiện tiên quyết cho kịch bản tự động hóa thử nghiệm Selenium. Trong ví dụ trên về hướng dẫn Selenium Python, điều kiện tiên quyết là người dùng phải ở trên trang chủ DuckDuckGo
Khi từ khóa - Mô tả các bước kịch bản. Đây là nơi thực hiện diễn ra. Như đã trình bày ở trên, người dùng nên nhập cụm từ tìm kiếm trước khi thực hiện thao tác tìm kiếm
Sau đó, từ khóa — Mô tả kết quả Kịch bản. Xác nhận cũng được thực hiện trong bước này. Kết quả tìm kiếm cho LambdaTest sẽ xuất hiện trong cửa sổ tìm kiếm
Và — Được sử dụng để cung cấp các bước bổ sung. Nó được sử dụng cùng với các từ khóa khác như Given, When và Then
Các tệp tính năng trong Gherkin là các tệp văn bản đơn giản thuần túy có một. mở rộng tính năng và có thể là mấu chốt trong phát triển theo định hướng kinh doanh. Tệp tính năng có thể chứa một hoặc nhiều kịch bản. Thẻ có liên quan [@Tag] được sử dụng để phân biệt giữa các Kịch bản khác nhau. Được hiển thị bên dưới trong hướng dẫn Selenium Python này, là một tệp tính năng đơn giản bao gồm hai Kịch bản — Tìm kiếm từ khóa LambdaTest trên Google và Tìm kiếm từ khóa LambdaTest trên DuckDuckGo.
con trăn
xxxxxxxxxx
1
16
1
Given [A Precondition]
12
Given [A Precondition]
23
Given [A Precondition]
34
Given [A Precondition]
45
Given [A Precondition]
56
Given [A Precondition]
67
Scenario: Search for LambdaTest on DuckDuckGo
8
Given I am on the DuckDuckGo homepage
9
________số 810
Then Search results for LambdaTest should appear
11
Given [A Precondition]
512
When [Some Event]
213
When [Some Event]
314
________số 815
Then Search results for LambdaTest should appear
16
Bắt đầu với Hành vi trong Python để kiểm tra hành vi
Trong hướng dẫn Selenium Python này, tôi sẽ chỉ cho bạn cách sử dụng khung kiểm tra BDD có tên là Behave với Selenium và Python, đặc biệt cho các tình huống liên quan đến kiểm tra trình duyệt tự động
Hành vi trong Python là gì?
Behave là một khung kiểm tra dựa trên hành vi, phần lớn tương tự như các khung kiểm tra BDD khác như Cucumber, SpecFlow, Cucumber-JVM, v.v. Là một khung thử nghiệm BDD, Python Behave về cơ bản khác với các khung thử nghiệm Selenium Python phổ biến khác như pytest, pyunit, v.v.
Các tệp tính năng trong Python Behave tương tự như các tập lệnh kiểm tra. Móc trong môi trường. py và đồ đạc có thể chèn logic của trình trợ giúp để thực hiện tự động hóa thử nghiệm Selenium
Bối cảnh trong Python Hành vi
Bối cảnh là một tính năng rất quan trọng trong Python Behave nơi người dùng và Behave có thể lưu trữ thông tin để chia sẻ xung quanh. Nó giữ thông tin theo ngữ cảnh trong quá trình thực hiện các bài kiểm tra. Nó là một đối tượng có thể lưu trữ dữ liệu do người dùng xác định cùng với dữ liệu do Python Behave xác định, trong các thuộc tính ngữ cảnh. Nó chạy ở ba cấp độ [tính năng, kịch bản và thử nghiệm] được quản lý tự động bởi Python Behave
Một lớp mới được thêm vào ngữ cảnh bất cứ khi nào Python Behave khởi chạy một tính năng hoặc kịch bản mới. Điều này cho phép cấp độ hoạt động mới thêm các giá trị mới hoặc ghi đè lên các giá trị đã được xác định trước đó trong suốt thời gian của hoạt động đó. Đây có thể gọi là phạm vi
Các giá trị có thể được xác định trong tệp kiểm soát môi trường i. e. Môi trường. py có thể được đặt ở cấp độ tính năng và sau đó bị ghi đè đối với một số tình huống. Các thay đổi được thực hiện ở cấp độ kịch bản không ảnh hưởng vĩnh viễn đến giá trị được đặt ở cấp độ tính năng. Biến ngữ cảnh trong mọi trường hợp là một thể hiện của hành vi. người chạy. Định nghĩa bài văn
Kiểm soát môi trường [môi trường. py] Trong Python Behave
Môi trường. py là một tệp môi trường với Python Behave hooks. Nó có thể được sử dụng để xác định mã sẽ được thực thi trước và sau khi xảy ra một số sự kiện nhất định trong chu trình tự động hóa thử nghiệm Selenium
Dưới đây là một số điều khiển môi trường phổ biến có thể được sử dụng trong Python Behave
before_step[context, step], after_step[context, step] — Được thực hiện trước và sau mỗi bước
before_scenario[bối cảnh, kịch bản], after_scenario[bối cảnh, kịch bản] — Được thực hiện trước và sau mỗi kịch bản
before_scenario[bối cảnh, tính năng], after_scenario[bối cảnh, tính năng] — Được thực hiện trước và sau mỗi tính năng
before_all[context], after_all[context] — Được thực hiện trước và sau khi thực hiện toàn bộ chu kỳ kiểm tra. Trong các ví dụ tự động hóa thử nghiệm Selenium được trình bày bên dưới, chúng tôi sẽ sử dụng before_all và after_all để phân bổ và thu hồi tài nguyên cần thiết cho việc thực hiện thử nghiệm
Cách cài đặt hành vi Python và các phụ thuộc khác để tự động kiểm tra Selenium
Trước khi cài đặt Python Behave, các điều kiện tiên quyết cần được cài đặt trên máy. Hỗ trợ chính thức cho Behave là dành cho Python 2 nhưng nó hoạt động hoàn toàn tốt với Python 3. x. Để trình diễn thử nghiệm trình duyệt tự động với Behave và Selenium, chúng tôi sẽ sử dụng máy thử nghiệm với hệ điều hành Windows 10
Python cho Windows có thể được tải xuống từ đây. IDE [Môi trường phát triển tích hợp] mà tôi sẽ sử dụng là PyCharm [Phiên bản cộng đồng] có thể tải xuống từ trang web PyCharm
Vì khung Selenium được sử dụng với Python Behave, nên bạn cũng cần cài đặt Selenium WebDriver cho trình duyệt web thực hiện tự động hóa thử nghiệm Selenium. Có thể tải xuống Selenium WebDriver cho các trình duyệt web phổ biến từ các vị trí sau
trình duyệt
Tải xuống vị trí
Ô-pê-ra
https. //github. com/operasoftware/operachromiumdriver/bản phát hành
firefox
https. //github. com/mozilla/geckodriver/bản phát hành
Trình duyệt Chrome
http. // chromedriver. crom. tổ chức/tải xuống
trình duyệt web IE
https. //github. com/SeleniumHQ/selenium/wiki/InternetExplorerDriver
Microsoft Cạnh
https. // blog. các cửa sổ. com/msedgedev/2015/07/23/bring-automated-testing-to-microsoft-edge-through-webdriver/
Sau khi hoàn thành cài đặt các điều kiện tiên quyết cần thiết, bây giờ bạn có thể cài đặt Python Behave framework. Có một số cách sử dụng để bạn có thể cài đặt Python Behave trên máy của mình
a. Sử dụng lệnh Pip
Thực hiện lệnh sau trên thiết bị đầu cuối
When [Some Event]
76b. Sử dụng Phân phối nguồn hành vi Python
Once the behave source distribution is unpacked, enter the newly created “behave-” directory and execute the following command:
When [Some Event]
77c. Sử dụng Kho lưu trữ Github
Chạy lệnh sau trên thiết bị đầu cuối để cài đặt phiên bản mới nhất của hành vi từ kho lưu trữ GitHub
When [Some Event]
78Cấu trúc thư mục [Dự án]
Vì các tệp thuộc các loại khác nhau có trong bất kỳ dự án nào sử dụng Python, nên khung có cấu trúc thư mục nghiêm ngặt. Cấu trúc dự án có ý kiến này rất hữu ích khi thêm các tính năng mới vào dự án hiện có vì các tệp được đặt trong các thư mục cụ thể trong cấu trúc. Nếu yêu cầu của dự án không phức tạp, bạn vẫn có thể loại bỏ cấu trúc và sử dụng một thư mục cho tất cả các loại tệp. Tuy nhiên, việc duy trì cấu trúc dự án thống nhất sẽ giúp duy trì dự án
Toàn bộ quá trình triển khai phải có trong thư mục "tính năng"
Tệp tính năng [*. tính năng] phải có trong thư mục 'tính năng', bao gồm 'môi trường. py’ [chứa các hook cần thiết để khởi tạo và hủy khởi tạo].
Việc triển khai định nghĩa bước phải có trong thư mục tính năng/bước
Trong hướng dẫn Selenium Python này, do đó, tôi sẽ trình bày các kịch bản tự động hóa thử nghiệm Selenium; . ini/. tập tin cfg
Cấu trúc thư mục tổng thể cho hướng dẫn Selenium Python này được hiển thị bên dưới
Văn bản thô
xxxxxxxxxx
1
12
1
2
When [Some Event]
73
When [Some Event]
84
When [Some Event]
95
Then [Some Outcome]
06
Then [Some Outcome]
17
Then [Some Outcome]
28
Then [Some Outcome]
39
Then [Some Outcome]
410
Then [Some Outcome]
511
Then [Some Outcome]
612
Bạn có thể xem ảnh chụp nhanh của thư mục dự án bên dưới, sẽ được sử dụng trong hướng dẫn Selenium Python này
Làm cách nào để chạy thử nghiệm trên Behave và Selenium WebDriver?
Trong phần này của hướng dẫn Selenium Python, chúng ta sẽ xem xét việc sử dụng khung Python Behave với Selenium WebDriver cho các tình huống liên quan đến kiểm tra trình duyệt tự động
ToDoApp. Thử nghiệm với Behave và Selenium WebDriver
Để minh họa cách sử dụng Python Behave với local Selenium WebDriver, tôi sẽ lấy ví dụ về một ứng dụng to-do đơn giản. Hiển thị bên dưới trong phần này trong hướng dẫn Selenium Python này là các chi tiết khác về bài kiểm tra tổng thể
Điều hướng đến ứng dụng việc cần làm bằng Chrome WebDriver
Đánh dấu hai mục đầu tiên là Xong i. e. Kiểm tra hai mục đó
Thêm một mục mới — Yey, Hãy thêm nó vào danh sách
Nhấp vào nút Thêm để thêm mục mới đó vào danh sách
Thực hiện
Quy trình triển khai tổng thể cho hướng dẫn Selenium Python này được chia thành các bước đơn giản
Tạo dự án
Tạo tập tin tính năng
Tạo Cài đặt cấu hình [hành xử. ban đầu. thành lập. cfg]
Tạo chức năng trợ giúp
Tạo tập tin kiểm soát môi trường [môi trường. py]
Tạo định nghĩa bước cho từng bước kịch bản
Chấp hành
Hãy xem xét từng nhiệm vụ phụ này để biết hướng dẫn chi tiết hơn về Selenium Python
1. Tạo phép chiếu — Tạo một dự án mới trong PyCharm bằng tùy chọn Tệp -> Dự án mới. Trước khi tạo dự án, bạn phải đảm bảo rằng các điều kiện tiên quyết tôi. e. Python, Behave được cài đặt trên máy
2. Tạo tệp tính năng — Tất cả các tệp tính năng Gherkin phải có trong thư mục features\steps. Chúng tôi sử dụng các từ khóa Then, When và Then để tạo ra ToDoApp. tính năng
Điều kiện tiên quyết là người dùng phải có mặt trên ứng dụng ToDo. Do đó, bước Kịch bản bắt đầu với từ khóa Đã cho
When [Some Event]
79Hiển thị bên dưới là tệp Tính năng cho ứng dụng ToDo — Các bước theo kịch bản được tạo dựa trên các tác vụ phải được thực hiện trong bài kiểm tra i. e. Nhấp vào hộp kiểm đầu tiên và hộp kiểm thứ hai và đánh dấu là Xong
con trăn
xxxxxxxxxx
1
1
Then [Some Outcome]
82
Given [A Precondition]
53
xxxxxxxxxx
04
xxxxxxxxxx
15
xxxxxxxxxx
26
xxxxxxxxxx
37
xxxxxxxxxx
48
xxxxxxxxxx
59
3. Tạo Cài đặt cấu hình [hành xử. ban đầu. thành lập. cfg] — Tệp cấu hình [có hành vi. ini, thiết lập. cfg, chất độc. ini, và. Beberc] trong Python Behave không gặp vấn đề như đồ đạc và có thể được sử dụng để thiết lập môi trường
Trong cư xử. ini, các giá trị bên dưới [behave. userdata] thẻ là các biến môi trường do người dùng xác định. trong thiết lập. cfg, các biến môi trường do người dùng xác định nằm trong thẻ [Environment]
Trong ví dụ của chúng tôi, trình duyệt thực hiện thử nghiệm là Chrome và biến môi trường mới 'Trình duyệt' được xác định trong thiết lập. cfg
When [Some Event]
804. Tạo Hàm trợ giúp - Tương tác với các phần tử web trên một trang web được thực hiện thông qua Selenium WebDriver của trình duyệt tương ứng. Bạn có thể trực tiếp sử dụng API Selenium WebDriver cho Python trong quá trình triển khai tự động hóa thử nghiệm Selenium, tuy nhiên, điều đó sẽ dẫn đến mã lặp lại. Ngoài ra, nó làm cho mã khó bảo trì hơn rất nhiều
Do đó, tôi đã tạo các hàm Trình trợ giúp [hoặc các hàm trình bao bọc] gọi nội bộ các API Selenium WebDriver tương ứng cho Python. Vì tất cả các phần tử trên trang web có thể không được tải đồng thời, nên phải thực hiện một thao tác chờ rõ ràng trong Selenium trước khi thực hiện bất kỳ hành động nào trên phần tử web
Lớp WebDriverWait được sử dụng để xác định thời gian chờ tùy thuộc vào các điều kiện nhất định trước khi tiếp tục mã. Cùng với trình bao bọc cho Selenium WebDriverWait, chúng tôi tạo các hàm trình bao bọc để thực hiện các hành động như tạo Selenium WebDriver [mở], giải phóng tài nguyên được phân bổ bởi Selenium WebDriver [đóng], định vị các phần tử bằng XPath, định vị các phần tử theo ID, v.v.
con trăn
xxxxxxxxxx
1
33
1
xxxxxxxxxx
72
xxxxxxxxxx
83
xxxxxxxxxx
94
Given [A Precondition]
55
Feature: LambdaTest search
16
Feature: LambdaTest search
27
Given [A Precondition]
58
Feature: LambdaTest search
49
Feature: LambdaTest search
510
Feature: LambdaTest search
611
Feature: LambdaTest search
712
Given [A Precondition]
513
Feature: LambdaTest search
914
Scenario: Search for LambdaTest on DuckDuckGo
015
Given [A Precondition]
516
Scenario: Search for LambdaTest on DuckDuckGo
217
Scenario: Search for LambdaTest on DuckDuckGo
318
Scenario: Search for LambdaTest on DuckDuckGo
419
Scenario: Search for LambdaTest on DuckDuckGo
520
Scenario: Search for LambdaTest on DuckDuckGo
621
Scenario: Search for LambdaTest on DuckDuckGo
422
Scenario: Search for LambdaTest on DuckDuckGo
823
Given [A Precondition]
524
Given I am on the DuckDuckGo homepage
025
Given I am on the DuckDuckGo homepage
126
Given [A Precondition]
527
Given I am on the DuckDuckGo homepage
328
Given I am on the DuckDuckGo homepage
429
Given [A Precondition]
530
Given I am on the DuckDuckGo homepage
631
Given I am on the DuckDuckGo homepage
732
Given [A Precondition]
533
Trong hàm tạo, thể hiện của biến self. _driver_wait có tham chiếu đến thể hiện của lớp Selenium WebDriverWait [i. e. lớp selen. webdriver. ủng hộ. Chờ đã. WebDriverChờ]. bản thân. _driver_wait được sử dụng trong tất cả các chức năng của trình trợ giúp để đảm bảo rằng phần tử web tương ứng được tải trước bất kỳ thao tác nào để tìm kiếm phần tử thông qua XPath, ID, v.v. được thực hiện trên trang
con trăn
xxxxxxxxxx
1
1
When I enter search term as LambdaTest
02
Feature: LambdaTest search
53
Feature: LambdaTest search
64
Feature: LambdaTest search
75
Given [A Precondition]
56
Feature: LambdaTest search
97
When I enter search term as LambdaTest
68
Để khởi động Selenium WebDriver, chúng ta có thể sử dụng các đồ đạc hành vi. Giống như đồ đạc pytest, đồ đạc trong hành vi cũng là các chức năng chủ yếu được sử dụng để thực thi mã liên quan đến hoạt động khởi tạo, cấu hình và dọn dẹp trong chu kỳ kiểm tra. Lịch thi đấu có phạm vi được xác định bằng cách sử dụng thẻ @fixture. Fixture khi được sử dụng trong các tình huống liên quan đến thử nghiệm trình duyệt tự động có một nhược điểm rất lớn — các phiên bản trình duyệt sẽ mở và đóng cho mọi tình huống/tính năng với thẻ @fixture. Nó không phải là một lựa chọn tốt khi thử nghiệm phải được thực hiện trên các loại và phiên bản trình duyệt web khác nhau
Trong Hướng dẫn Selenium Python này, chức năng môi trường được sử dụng để khởi động WebDriver. Việc truy cập vào phiên bản Web được thực hiện thông qua chức năng môi trường before_all trong môi trường. py
con trăn
xxxxxxxxxx
1
1
When I enter search term as LambdaTest
82
When I enter search term as LambdaTest
93
Given [A Precondition]
54
Then Search results for LambdaTest should appear
15
Then Search results for LambdaTest should appear
26
Then Search results for LambdaTest should appear
37
5. Tạo tập tin kiểm soát môi trường [môi trường. py] — Các hook bắt buộc phải được thực thi trước và sau chu trình tự động hóa thử nghiệm Selenium được xác định trong môi trường. py. Là một tập tin cấu hình [thiết lập. cfg] được sử dụng để xác định các biến môi trường do người dùng xác định, mô-đun ConfigParser phải được sử dụng để phân tích cú pháp nội dung của. tập tin cfg. PyCharm sẽ nhắc cài đặt các phụ thuộc cần thiết sau khi dự án được tải
con trăn
xxxxxxxxxx
1
25
1
Then Search results for LambdaTest should appear
52
When I enter search term as LambdaTest
83
Then Search results for LambdaTest should appear
74
Then Search results for LambdaTest should appear
85
Then Search results for LambdaTest should appear
96
Given [A Precondition]
007
Then Search results for LambdaTest should appear
58
Given [A Precondition]
029
Given [A Precondition]
510
Given [A Precondition]
0411
Given [A Precondition]
0512
Given [A Precondition]
0613
Given [A Precondition]
0714
Given [A Precondition]
0815
Given [A Precondition]
516
Given [A Precondition]
1017
Given [A Precondition]
1118
Given [A Precondition]
1219
Given [A Precondition]
1320
Given [A Precondition]
1421
Given [A Precondition]
1522
Given [A Precondition]
1623
Given [A Precondition]
524
Given [A Precondition]
1825
Given [A Precondition]
19Trình duyệt mà các bài kiểm tra đã được thực hiện được đọc từ biến 'Trình duyệt' được xác định trong thiết lập. cfg trong phần [Môi trường]
con trăn
xxxxxxxxxx
1
1
Given [A Precondition]
212
Given [A Precondition]
083
Given [A Precondition]
54
Given [A Precondition]
245
Given [A Precondition]
11Tài nguyên được phân bổ cho tự động hóa thử nghiệm Selenium được giải phóng như một phần của điều khiển after_all. Như đã thấy trong phần triển khai bên dưới, các hàm môi trường [hoặc hàm trợ giúp] được sử dụng để thực hiện hoạt động dọn dẹp
con trăn
xxxxxxxxxx
1
1
Given [A Precondition]
182
Given [A Precondition]
193
6. Tạo định nghĩa bước cho từng bước kịch bản — Mỗi bước kịch bản được ánh xạ tới một hàm Python được trang trí gọi là định nghĩa bước. Hiển thị bên dưới trong hướng dẫn Selenium Python này là một đoạn mã của một bước kịch bản được liên kết với định nghĩa bước
Bước kịch bản -
When [Some Event]
81Định nghĩa bước -
con trăn
xxxxxxxxxx
1
1
Given [A Precondition]
302
Given [A Precondition]
313
Given [A Precondition]
324
Given [A Precondition]
335
Việc triển khai đầy đủ các định nghĩa bước cho hướng dẫn Selenium Python này ở bên dưới
con trăn
xxxxxxxxxx
1
37
1
Given [A Precondition]
352
When I enter search term as LambdaTest
83
Then Search results for LambdaTest should appear
74
Then Search results for LambdaTest should appear
85
Then Search results for LambdaTest should appear
96
Given [A Precondition]
007
Given [A Precondition]
418
Given [A Precondition]
59
Given [A Precondition]
3010
Given [A Precondition]
3111
Given [A Precondition]
3212
Given [A Precondition]
3313
Given [A Precondition]
514
Given [A Precondition]
4815
Given [A Precondition]
4916
Given [A Precondition]
5017
Given [A Precondition]
5118
Given [A Precondition]
519
Given [A Precondition]
5320
Given [A Precondition]
5421
Given [A Precondition]
5522
Given [A Precondition]
523
Given [A Precondition]
5724
Given [A Precondition]
5825
Given [A Precondition]
5926
Given [A Precondition]
527
Given [A Precondition]
6128
Given [A Precondition]
6229
Given [A Precondition]
6330
Given [A Precondition]
531
Given [A Precondition]
6532
Given [A Precondition]
533
Given [A Precondition]
6734
Given [A Precondition]
6835
Given [A Precondition]
6936
Given [A Precondition]
7037
Như đã thấy trong phần triển khai ở trên cho hướng dẫn Selenium Python này, đối tượng Ngữ cảnh được sử dụng để truy cập các hàm trợ giúp/môi trường. Các hàm trợ giúp tương ứng được sử dụng để gọi trình duyệt web, mở URL thử nghiệm, định vị các phần tử tương ứng trên trang và thực hiện các hành động cần thiết trên các phần tử đó sau khi chúng được tải trên trang
Các phần tử có thể được định vị bằng công cụ Kiểm tra trong trình duyệt Chrome/Firefox
Là một phần của định nghĩa bước cho bước Tôi nhấp vào hộp kiểm đầu tiên và hộp kiểm thứ hai, hai phần tử hộp kiểm được định vị bằng công cụ Định vị tên. Sau khi xác định vị trí, thao tác nhấp được thực hiện trên các phần tử đó
con trăn
xxxxxxxxxx
1
1
Given [A Precondition]
722
Given [A Precondition]
493
Given [A Precondition]
504
Given [A Precondition]
515
7. Thực thi — Để thực hiện các thử nghiệm BDD mới được triển khai, chúng tôi sử dụng hành vi của công cụ dòng lệnh có thể được định cấu hình bằng các tệp cấu hình và cũng có một loạt các đối số dòng lệnh
Để thực thi, thư mục hiện tại của bạn phải là thư mục chứa mã nguồn, các thư mục — tính năng, trình trợ giúp, v.v.
Python Behave hỗ trợ một số đối số dòng lệnh. Thực hiện lệnh trợ giúp để biết thêm về các tùy chọn đó
When [Some Event]
82Tệp tính năng nằm trong features\ToDoApp. tính năng. Chạy lệnh sau trên thiết bị đầu cuối để kích hoạt thực thi tệp tính năng
When [Some Event]
83Hiển thị bên dưới là ảnh chụp nhanh thực thi tự động hóa thử nghiệm Selenium được thực hiện bằng WebDriver cục bộ
Sử dụng Python Behave với Cloud Selenium Grid
Tự động hóa thử nghiệm Selenium với Lưới Selenium cục bộ có thể được sử dụng để thử nghiệm trên một số kết hợp trình duyệt và hệ điều hành có thể đếm được. Có một cơ sở hạ tầng nội bộ chứa các máy có các loại trình duyệt, phiên bản trình duyệt và hệ điều hành khác nhau có thể rất tốn kém. Nó cũng không phải là một cách tiếp cận có thể mở rộng
Kiểm thử trình duyệt tự động cho các sản phẩm web là vô cùng quan trọng vì nó giúp cải thiện phạm vi kiểm thử, do đó, chất lượng sản phẩm. Một cách tiếp cận có thể mở rộng hơn là sử dụng thử nghiệm trên nhiều trình duyệt trên đám mây vì các thử nghiệm có thể được thực hiện trên một số lượng lớn các kết hợp trình duyệt và nền tảng
Nỗ lực liên quan đến việc chuyển triển khai hiện có trên lưới Selenium cục bộ sang lưới Selenium từ xa dựa trên đám mây là tối thiểu vì các thay đổi chủ yếu liên quan đến cơ sở hạ tầng. Khi bạn đã tạo một tài khoản trên LambdaTest, bạn phải ghi lại tên người dùng và khóa truy cập từ Phần Hồ sơ vì sự kết hợp đó được sử dụng để truy cập vào Cloud Selenium Grid. Bảng điều khiển được sử dụng để xem tất cả các chi tiết liên quan đến các thử nghiệm được thực hiện trên lưới Selenium từ xa. Trình tạo khả năng được sử dụng để tạo các khả năng nền tảng và trình duyệt mong muốn sẽ được sử dụng để kiểm tra trình duyệt tự động.
ToDoApp. Thử nghiệm với Python Behave và Remote Selenium WebDriver
Để chứng minh việc sử dụng Python Behave với Selenium WebDriver từ xa, chúng tôi sử dụng kịch bản thử nghiệm tương tự của ToDoApp. Các bước phải thực hiện trong các bài kiểm tra cũng được giữ nguyên
Điều hướng đến ứng dụng việc cần làm https. //lambdatest. github. io/sample-todo-app/ sử dụng Chrome WebDriver
Đánh dấu hai mục đầu tiên là Xong i. e. Kiểm tra hai mục đó
Thêm một mục mới — Yey, Hãy thêm nó vào danh sách
Nhấp vào nút Thêm để thêm mục mới đó vào danh sách
Thực hiện
Mã hiện có phải được thay đổi để mã hoạt động trên lưới Cloud Selenium. Logic cốt lõi của các kịch bản thử nghiệm không thay đổi. Dưới đây là những thay đổi chính trong quá trình triển khai trong hướng dẫn Selenium Python này
Để chứng minh việc sử dụng bebe. ini, thiết lập. cfg sẽ không được sử dụng để tạo cài đặt cấu hình. Giống như thiết lập. cfg, cư xử. ini cũng sẽ có trong thư mục mẹ chứa mã kiểm tra
Khi một cài đặt cấu hình khác được sử dụng, các thay đổi tương ứng phải được thực hiện trong quá trình triển khai. Các tệp phải được thêm/thay đổi bên dưới
con trăn
xxxxxxxxxx
1
1
Given [A Precondition]
772
Given [A Precondition]
783
Given [A Precondition]
794
Given [A Precondition]
80Các thử nghiệm phải được thực hiện trên Chrome [phiên bản — 76. 0] cho nền tảng Windows 10. Có thể tạo các khả năng cần thiết bằng cách sử dụng trình tạo khả năng LambdaTest
con trăn
xxxxxxxxxx
1
1
Given [A Precondition]
822
Given [A Precondition]
833
Given [A Precondition]
844
Given [A Precondition]
855
Given [A Precondition]
866
Given [A Precondition]
877
Given [A Precondition]
888
Các khả năng sẽ là một phần của hành vi. ini và các mục nhập tương ứng từ tệp ini được đọc trong API get_browser [được định nghĩa trong helper\helper_web. py]
1. Tạo Cài đặt cấu hình [hành xử. ini]
Hiển thị bên dưới là nội dung của hành vi. ban đầu
con trăn
xxxxxxxxxx
1
10
1
Given [A Precondition]
902
Given [A Precondition]
913
Given [A Precondition]
924
Given [A Precondition]
935
Given [A Precondition]
946
Given [A Precondition]
957
Given [A Precondition]
968
Given [A Precondition]
979
Given [A Precondition]
9810
Thay vì chỉ tên trình duyệt [tôi. e. Chrome] được bao gồm trong cài đặt cấu hình để kiểm tra bằng cách sử dụng Selenium WebDriver cục bộ, ở đây có các chức năng khác của trình duyệt cùng với thông tin đăng nhập LambdaTest. Bạn có thể lấy tổ hợp tên người dùng và khóa truy cập từ Phần Hồ sơ trên LambdaTest
Do đó, đối tượng ngữ cảnh chứa nhiều thông tin hơn khi so sánh với thử nghiệm tương ứng đã sử dụng Selenium WebDriver cục bộ
2. Tạo các hàm trợ giúp thích hợp [helper_web. py]
Cùng với trình duyệt, bốn đối số khác được thêm vào get_browser API. Các đối số bổ sung này phù hợp với các tham số có trong [behave. userdata] phần hành vi. ban đầu
con trăn
xxxxxxxxxx
1
20
1
When I enter search term as LambdaTest
82
When I enter search term as LambdaTest
93
Given [A Precondition]
54
When [Some Event]
035
Given [A Precondition]
56
When [Some Event]
057
When [Some Event]
068
When [Some Event]
079
When [Some Event]
0810
When [Some Event]
0911
When [Some Event]
1012
When [Some Event]
1113
When [Some Event]
1214
When [Some Event]
1315
When [Some Event]
1416
When [Some Event]
1517
Then Search results for LambdaTest should appear
218
When [Some Event]
1719
When [Some Event]
1820
Để đơn giản hóa, chúng tôi đã sử dụng trình duyệt thử nghiệm như Chrome. Thay vì sử dụng Selenium WebDriver cục bộ, Selenium WebDriver cho Chrome từ xa được gọi. Các khả năng của trình duyệt được chuyển cùng với remote_url chứa vị trí của lưới Selenium từ xa
con trăn
xxxxxxxxxx
1
1
When [Some Event]
052
When [Some Event]
063
When [Some Event]
224
When [Some Event]
225
When [Some Event]
246
When [Some Event]
177
When [Some Event]
188
3. Tạo tập tin kiểm soát môi trường [môi trường. py]
Ngoài biến trình duyệt hiện được đặt, chúng tôi đã xác định browser_version và nền tảng trong [behave. userdata] phần hành vi. ban đầu
con trăn
xxxxxxxxxx
1
23
1
Then Search results for LambdaTest should appear
52
When I enter search term as LambdaTest
83
Then Search results for LambdaTest should appear
74
Then Search results for LambdaTest should appear
85
Then Search results for LambdaTest should appear
96
Given [A Precondition]
007
Then Search results for LambdaTest should appear
58
Given [A Precondition]
029
Given [A Precondition]
510
When [Some Event]
0311
Given [A Precondition]
512
Given [A Precondition]
0413
When [Some Event]
4014
When [Some Event]
4115
When [Some Event]
4216
Given [A Precondition]
517
When [Some Event]
4418
When [Some Event]
4519
Given [A Precondition]
1220
Given [A Precondition]
521
Given [A Precondition]
1822
Given [A Precondition]
1923
Các giá trị từ [behave. phần userdata] [trong hành vi. ini] được đọc bằng cấu hình. userdata['attribute_name'] trong before_all hook. Các giá trị này cũng được thêm vào đối tượng ngữ cảnh vì chúng sẽ được sử dụng trong toàn bộ chu trình thử nghiệm
con trăn
xxxxxxxxxx
1
1
Given [A Precondition]
042
When [Some Event]
403
When [Some Event]
414
When [Some Event]
425
Given [A Precondition]
56
When [Some Event]
447
When [Some Event]
458
4. Tạo Định nghĩa Bước cho từng Bước Kịch bản [features\steps\ToDoApp_steps. py]
Mặc dù không có thay đổi lớn nào trong tệp chứa định nghĩa bước, một thay đổi nhỏ được thực hiện để chặn các cảnh báo urllib3
con trăn
xxxxxxxxxx
1
18
1
When I enter search term as LambdaTest
82
Then Search results for LambdaTest should appear
73
Then Search results for LambdaTest should appear
84
Then Search results for LambdaTest should appear
95
Given [A Precondition]
006
Given [A Precondition]
417
When [Some Event]
658
Given [A Precondition]
59
When [Some Event]
6710
Given [A Precondition]
511
Given [A Precondition]
3012
Given [A Precondition]
3113
Given [A Precondition]
3214
Given [A Precondition]
3315
When [Some Event]
7316
When [Some Event]
7317
When [Some Event]
7318
Để thực hiện các thử nghiệm trên lưới Selenium từ xa, chúng tôi kích hoạt cùng một lệnh Python behavior trên thiết bị đầu cuối
When [Some Event]
83Hiển thị bên dưới là ảnh chụp nhanh thực thi trên LambdaTest cho thử nghiệm được thực hiện bằng Selenium WebDriver từ xa
Bảng điều khiển tự động hóa chứa thông tin chi tiết về thử nghiệm, bao gồm tóm tắt, nhật ký mạng, nhật ký Selenium, ngoại lệ, v.v. Dưới đây là ảnh chụp nhanh quá trình thực thi tệp tính năng [i. e. tính năng\ToDoApp. tính năng] trong hướng dẫn Selenium Python này
Ưu và nhược điểm của Python Behave Framework
Mọi khung công tác đều có những ưu điểm [ưu điểm] và khuyết điểm [nhược điểm], trường hợp tương tự với khung hành vi Python. Mặc dù nó là một khung phổ biến cho BDD nhưng nó không có nhiều thiếu sót
Ưu điểm của việc sử dụng Python Behave Framework
Tài liệu và hướng dẫn trực tuyến tuyệt vời
Hỗ trợ PyCharm [Phiên bản chuyên nghiệp]
Hỗ trợ đầy đủ ngôn ngữ Gherkin
Dễ dàng nâng cấp với kiến thức trước đó về bất kỳ khung BDD nào
Dễ dàng thiết lập và dọn dẹp do có sẵn các chức năng môi trường, cài đặt cấu hình, đồ đạc, v.v.
Hỗ trợ tích hợp với Django và Flask
Nhược điểm của việc sử dụng Python Behave Framework
Không được PyCharm [Phiên bản cộng đồng] hỗ trợ
Các bước chia sẻ giữa các tệp tính năng khác nhau không đơn giản
Không có hỗ trợ tích hợp để thực hiện kiểm tra song song. Giải pháp cho việc thực thi kiểm tra song song yêu cầu phần mềm bổ sung, chuỗi thảo luận phổ biến trên StackOverflow tại đây và tại đây
Hành vi song song của khung phổ biến trước đó đã tạo điều kiện cho việc thực thi thử nghiệm song song trên hành vi Python hiện không được dùng nữa
Nó là một bọc
Behave là một trong những khung BDD phổ biến được các học viên Python có kinh nghiệm ưa thích. Trong hướng dẫn Selenium Python này, tôi đã giải thích chi tiết cách sử dụng Python Behave để tự động hóa thử nghiệm Selenium. Ưu điểm của việc sử dụng Python Behave là có rất nhiều tài liệu và hỗ trợ có sẵn trên internet có thể hữu ích để bắt đầu
Khi Gherkin được sử dụng, việc tạo các tệp tính năng không yêu cầu bất kỳ bí quyết kỹ thuật nào. Thử nghiệm song song với Python là tính năng quan trọng nhất khi nói đến tự động hóa thử nghiệm Selenium vì nhiều thử nghiệm phải được thực hiện trên các kết hợp 'N' của trình duyệt, nền tảng và thiết bị
Python Behave phù hợp nhất để thử nghiệm trình duyệt tự động nối tiếp. Ngay cả khi chúng tôi chuyển thử nghiệm sang lưới Selenium mạnh mẽ, bạn có thể không đạt được thông lượng như mong đợi vì thử nghiệm song song gặp nhiều rắc rối khi thực hiện. Tóm lại, Python có bộ tính năng phù hợp [với một vài thiếu sót] giúp nó hữu ích cho BDD
Đó là tất cả cho bây giờ, tôi hy vọng bạn tìm thấy bài viết thông tin. Hãy retweet bài viết này và chia sẻ nó với các đồng nghiệp của bạn