Hướng dẫn khung bdd python

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ó

qua

Vỏ bọc Himanshu

CỐT LÕI ·

Tháng 7. 15, 20 · Vùng hiệu suất · Hướng dẫn

Thí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ố 8

5

    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]
1

2

    Given [A Precondition]
2

3

    Given [A Precondition]
3

4

    Given [A Precondition]
4

5

    Given [A Precondition]
5

6

    Given [A Precondition]
6

7

Scenario: Search for LambdaTest on DuckDuckGo

8

    Given I am on the DuckDuckGo homepage

9

________số 8

10

    Then Search results for LambdaTest should appear

11

    Given [A Precondition]
5

12

    When [Some Event]
2

13

    When [Some Event]
3

14

________số 8

15

    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]
76

b. 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]
77

c. 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]
78

Cấ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]
7

3

    When [Some Event]
8

4

    When [Some Event]
9

5

    Then [Some Outcome]
0

6

    Then [Some Outcome]
1

7

    Then [Some Outcome]
2

8

    Then [Some Outcome]
3

9

    Then [Some Outcome]
4

10

    Then [Some Outcome]
5

11

    Then [Some Outcome]
6

12




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ể

  1. Điều hướng đến ứng dụng việc cần làm bằng Chrome WebDriver

  2. Đánh dấu hai mục đầu tiên là Xong i. e. Kiểm tra hai mục đó

  3. Thêm một mục mới — Yey, Hãy thêm nó vào danh sách

  4. 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

  1. Tạo dự án

  2. Tạo tập tin tính năng

  3. Tạo Cài đặt cấu hình [hành xử. ban đầu. thành lập. cfg]

  4. Tạo chức năng trợ giúp

  5. Tạo tập tin kiểm soát môi trường [môi trường. py]

  6. Tạo định nghĩa bước cho từng bước kịch bản

  7. 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]
79

Hiể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]
8

2

    Given [A Precondition]
5

3

xxxxxxxxxx
0

4

xxxxxxxxxx
1

5

xxxxxxxxxx
2

6

xxxxxxxxxx
3

7

xxxxxxxxxx
4

8

xxxxxxxxxx
5

9




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]
80

4. 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
7

2

xxxxxxxxxx
8

3

xxxxxxxxxx
9

4

    Given [A Precondition]
5

5

Feature: LambdaTest search
1

6

Feature: LambdaTest search
2

7

    Given [A Precondition]
5

8

Feature: LambdaTest search
4

9

Feature: LambdaTest search
5

10

Feature: LambdaTest search
6

11

Feature: LambdaTest search
7

12

    Given [A Precondition]
5

13

Feature: LambdaTest search
9

14

Scenario: Search for LambdaTest on DuckDuckGo
0

15

    Given [A Precondition]
5

16

Scenario: Search for LambdaTest on DuckDuckGo
2

17

Scenario: Search for LambdaTest on DuckDuckGo
3

18

Scenario: Search for LambdaTest on DuckDuckGo
4

19

Scenario: Search for LambdaTest on DuckDuckGo
5

20

Scenario: Search for LambdaTest on DuckDuckGo
6

21

Scenario: Search for LambdaTest on DuckDuckGo
4

22

Scenario: Search for LambdaTest on DuckDuckGo
8

23

    Given [A Precondition]
5

24

    Given I am on the DuckDuckGo homepage
0

25

    Given I am on the DuckDuckGo homepage
1

26

    Given [A Precondition]
5

27

    Given I am on the DuckDuckGo homepage
3

28

    Given I am on the DuckDuckGo homepage
4

29

    Given [A Precondition]
5

30

    Given I am on the DuckDuckGo homepage
6

31

    Given I am on the DuckDuckGo homepage
7

32

    Given [A Precondition]
5

33




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
0

2

Feature: LambdaTest search
5

3

Feature: LambdaTest search
6

4

Feature: LambdaTest search
7

5

    Given [A Precondition]
5

6

Feature: LambdaTest search
9

7

    When I enter search term as LambdaTest
6

8




Để 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
8

2

    When I enter search term as LambdaTest
9

3

    Given [A Precondition]
5

4

    Then Search results for LambdaTest should appear
1

5

    Then Search results for LambdaTest should appear
2

6

    Then Search results for LambdaTest should appear
3

7




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
5

2

    When I enter search term as LambdaTest
8

3

    Then Search results for LambdaTest should appear
7

4

    Then Search results for LambdaTest should appear
8

5

    Then Search results for LambdaTest should appear
9

6

    Given [A Precondition]
00

7

    Then Search results for LambdaTest should appear
5

8

    Given [A Precondition]
02

9

    Given [A Precondition]
5

10

    Given [A Precondition]
04

11

    Given [A Precondition]
05

12

    Given [A Precondition]
06

13

    Given [A Precondition]
07

14

    Given [A Precondition]
08

15

    Given [A Precondition]
5

16

    Given [A Precondition]
10

17

    Given [A Precondition]
11

18

    Given [A Precondition]
12

19

    Given [A Precondition]
13

20

    Given [A Precondition]
14

21

    Given [A Precondition]
15

22

    Given [A Precondition]
16

23

    Given [A Precondition]
5

24

    Given [A Precondition]
18

25

    Given [A Precondition]
19




Trì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]
21

2

    Given [A Precondition]
08

3

    Given [A Precondition]
5

4

    Given [A Precondition]
24

5

    Given [A Precondition]
11




Tà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]
18

2

    Given [A Precondition]
19

3




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]
30

2

    Given [A Precondition]
31

3

    Given [A Precondition]
32

4

    Given [A Precondition]
33

5




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]
35

2

    When I enter search term as LambdaTest
8

3

    Then Search results for LambdaTest should appear
7

4

    Then Search results for LambdaTest should appear
8

5

    Then Search results for LambdaTest should appear
9

6

    Given [A Precondition]
00

7

    Given [A Precondition]
41

8

    Given [A Precondition]
5

9

    Given [A Precondition]
30

10

    Given [A Precondition]
31

11

    Given [A Precondition]
32

12

    Given [A Precondition]
33

13

    Given [A Precondition]
5

14

    Given [A Precondition]
48

15

    Given [A Precondition]
49

16

    Given [A Precondition]
50

17

    Given [A Precondition]
51

18

    Given [A Precondition]
5

19

    Given [A Precondition]
53

20

    Given [A Precondition]
54

21

    Given [A Precondition]
55

22

    Given [A Precondition]
5

23

    Given [A Precondition]
57

24

    Given [A Precondition]
58

25

    Given [A Precondition]
59

26

    Given [A Precondition]
5

27

    Given [A Precondition]
61

28

    Given [A Precondition]
62

29

    Given [A Precondition]
63

30

    Given [A Precondition]
5

31

    Given [A Precondition]
65

32

    Given [A Precondition]
5

33

    Given [A Precondition]
67

34

    Given [A Precondition]
68

35

    Given [A Precondition]
69

36

    Given [A Precondition]
70

37




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]
72

2

    Given [A Precondition]
49

3

    Given [A Precondition]
50

4

    Given [A Precondition]
51

5




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]
82

Tệ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]
83

Hiể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

  1. Đ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

  2. Đánh dấu hai mục đầu tiên là Xong i. e. Kiểm tra hai mục đó

  3. Thêm một mục mới — Yey, Hãy thêm nó vào danh sách

  4. 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

  1. Để 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

  2. 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]
77

2

    Given [A Precondition]
78

3

    Given [A Precondition]
79

4

    Given [A Precondition]
80




Cá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]
82

2

    Given [A Precondition]
83

3

    Given [A Precondition]
84

4

    Given [A Precondition]
85

5

    Given [A Precondition]
86

6

    Given [A Precondition]
87

7

    Given [A Precondition]
88

8




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]
90

2

    Given [A Precondition]
91

3

    Given [A Precondition]
92

4

    Given [A Precondition]
93

5

    Given [A Precondition]
94

6

    Given [A Precondition]
95

7

    Given [A Precondition]
96

8

    Given [A Precondition]
97

9

    Given [A Precondition]
98

10




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
8

2

    When I enter search term as LambdaTest
9

3

    Given [A Precondition]
5

4

    When [Some Event]
03

5

    Given [A Precondition]
5

6

    When [Some Event]
05

7

    When [Some Event]
06

8

    When [Some Event]
07

9

    When [Some Event]
08

10

    When [Some Event]
09

11

    When [Some Event]
10

12

    When [Some Event]
11

13

    When [Some Event]
12

14

    When [Some Event]
13

15

    When [Some Event]
14

16

    When [Some Event]
15

17

    Then Search results for LambdaTest should appear
2

18

    When [Some Event]
17

19

    When [Some Event]
18

20




Để đơ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]
05

2

    When [Some Event]
06

3

    When [Some Event]
22

4

    When [Some Event]
22

5

    When [Some Event]
24

6

    When [Some Event]
17

7

    When [Some Event]
18

8




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
5

2

    When I enter search term as LambdaTest
8

3

    Then Search results for LambdaTest should appear
7

4

    Then Search results for LambdaTest should appear
8

5

    Then Search results for LambdaTest should appear
9

6

    Given [A Precondition]
00

7

    Then Search results for LambdaTest should appear
5

8

    Given [A Precondition]
02

9

    Given [A Precondition]
5

10

    When [Some Event]
03

11

    Given [A Precondition]
5

12

    Given [A Precondition]
04

13

    When [Some Event]
40

14

    When [Some Event]
41

15

    When [Some Event]
42

16

    Given [A Precondition]
5

17

    When [Some Event]
44

18

    When [Some Event]
45

19

    Given [A Precondition]
12

20

    Given [A Precondition]
5

21

    Given [A Precondition]
18

22

    Given [A Precondition]
19

23




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]
04

2

    When [Some Event]
40

3

    When [Some Event]
41

4

    When [Some Event]
42

5

    Given [A Precondition]
5

6

    When [Some Event]
44

7

    When [Some Event]
45

8




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
8

2

    Then Search results for LambdaTest should appear
7

3

    Then Search results for LambdaTest should appear
8

4

    Then Search results for LambdaTest should appear
9

5

    Given [A Precondition]
00

6

    Given [A Precondition]
41

7

    When [Some Event]
65

8

    Given [A Precondition]
5

9

    When [Some Event]
67

10

    Given [A Precondition]
5

11

    Given [A Precondition]
30

12

    Given [A Precondition]
31

13

    Given [A Precondition]
32

14

    Given [A Precondition]
33

15

    When [Some Event]
73

16

    When [Some Event]
73

17

    When [Some Event]
73

18




Để 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]
83

Hiể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

Chủ Đề