Ví dụ thử nghiệm đơn vị mô phỏng Python
Thư viện unittest của Python giúp bạn kiểm tra mã ứng dụng của mình để tìm lỗi theo cách tự động. Đó là một trong những phương pháp thử nghiệm được thảo luận trong hướng dẫn của chúng tôi, Tổng quan về Khung kiểm tra Python để kiểm tra đơn vị. Thử nghiệm mô phỏng đặc biệt hữu ích khi mã của bạn chưa được hoàn thành và quá trình phát triển của bạn đang tiến triển. Nó thực hiện kiểm tra liên tục trong quá trình phát triển và cung cấp thông tin chi tiết tốt về cách ứng dụng cuối cùng có thể hoạt động. Hướng dẫn này chỉ cho bạn cách sử dụng thư viện unittest của Python để tạo các đối tượng giả để kiểm tra mã của bạn Show
Mục đích của các đối tượng giả trong thử nghiệm đơn vị là gì?Thử nghiệm ứng dụng và đơn vị kiểm tra cách mã của bạn hoạt động trong các tình huống khác nhau. Các nhà phát triển sử dụng một số phương pháp để thực hiện thử nghiệm, nhưng ba phương pháp phổ biến nhất được giải thích bên dưới
Hầu hết các nhà phát triển sử dụng các khung chuyên dụng, chẳng hạn như thư viện unittest của Python, để tạo các bản mô phỏng và sơ khai. Hàng giả thường được mã hóa mà không cần sự trợ giúp của thư viện hoặc khung Trong thử nghiệm giả, unittest dựa trên một đối tượng giả. Đối tượng mô phỏng này được thiết kế để chấp nhận cùng loại tham số đầu vào như đối tượng mà nó đang kiểm tra. Nó cũng phải có cùng kiểu trả về với đối tượng mà nó đang thử nghiệm. Bản vá giả Python là một khai báo đại diện cho chức năng thực cho đến khi chức năng thực khả dụng. Một bản vá được viết dưới dạng trang trí chức năng. Khi chức năng khả dụng, bản vá được hoàn tác. Mocks được sử dụng trong các trường hợp sau
Thư viện đối tượng Mock Object đơn giản nhất của PythonThư viện đối tượng giả định unittest của Python cho phép bạn kiểm tra các khu vực trong ứng dụng của mình bằng các đối tượng giả định và bằng các xác nhận. Một lợi thế lớn khi sử dụng các đối tượng giả là mã thử nghiệm được đặt ở một vị trí trung tâm. Các kỹ thuật kiểm tra khác, chẳng hạn như sơ khai, yêu cầu bạn thêm sơ khai trong toàn bộ mã, điều này có thể khiến việc duy trì kiểm tra của bạn trở nên khó khăn hơn Tạo đối tượng giả mớiLàm việc với một mô hình khác với làm việc với các đối tượng tiêu chuẩn. Mô hình có thể thực hiện các xác nhận và tạo kết quả nhất quán bằng cách đặt các phương thức đối tượng thành một giá trị cụ thể. Các đối tượng giả cũng có thể tìm kiếm các tác dụng phụ do thực hiện các cuộc gọi cụ thể. Tuy nhiên, một bản giả không phải là mã thực. Một đối tượng giả hoạt động giống như một đối tượng “thực”, nhưng không làm thay đổi mã của bạn. Các bước sau đây đi qua một số khái niệm cơ bản về đối tượng mô phỏng để minh họa những gì mô hình có thể thực hiện Ghi chú
Sử dụng số liệu thống kê giảKhi một ứng dụng quá phức tạp để thực hiện phân tích từng bước cho mọi cuộc gọi giả, hãy sử dụng số liệu thống kê giả để xác định tình trạng của ứng dụng. Các bước trong phần này cho bạn biết cách hoạt động của số liệu thống kê đối tượng mô phỏng. Phần này dựa trên đối tượng 69 mà bạn đã tạo trong phần Khởi tạo đối tượng mô phỏng mớiMột trong những số liệu thống kê hữu ích nhất là số lần một mô phỏng cụ thể được gọi. Nếu bạn mong đợi năm lời gọi đến một hàm hoặc đối tượng và chỉ nhận được bốn lời gọi thì có vấn đề. Sử dụng mã bên dưới để xem cách hoạt động của thuộc tính 90 0Đôi khi bạn cần biết một phương thức được gọi như thế nào. Ví dụ, với 91, bạn không chỉ cần biết tần suất nó được gọi mà còn với những đối số nào. Bạn có hai lựa chọn. chỉ yêu cầu thông tin cuộc gọi mới nhất bằng cách sử dụng 92 hoặc yêu cầu tất cả thông tin cuộc gọi bằng cách sử dụng 93. Bạn có thể sử dụng cả hai như hình dưới đây 1Để tìm hiểu cách thức mô phỏng được gọi và thứ tự các cuộc gọi đến, thuộc tính 94 giúp bạn có được thông tin này 2Đầu ra từ cuộc gọi này hiển thị một danh sách các cuộc gọi phương thức theo thứ tự mà chúng xuất hiện tương tự như sau 3Đối tượng MagicMockĐối tượng 95 là tập con của đối tượng 96. Nó cung cấp các giá trị hợp lý, chẳng hạn như giá trị trả về cho các lệnh gọi phương thức phổ biến thường xuất hiện trong Python. Dưới đây là các cuộc gọi phương thức và kết quả mặc định của chúng
Sử dụng 95 yêu cầu thiết lập bổ sung, nhưng nó giúp bạn tiết kiệm khá nhiều thời gian. Các bước dưới đây cho bạn thấy cách sử dụng cơ bản của đối tượng 95
Trình trang trí bản vá () của Thư viện Mock PythonBản vá mô phỏng Python cung cấp sự thay thế cho một đối tượng thực. Điều này cho phép bạn kiểm soát phạm vi trong đó đối tượng thực được mô phỏng. Khi đối tượng thực tồn tại trong phạm vi được yêu cầu, bản vá không còn cung cấp vật thay thế nữa và quá trình dọn dẹp sẽ tự động. Có hai hình thức của phương pháp 29. trang trí và quản lý bối cảnhCả hai đều hoàn thành cùng một việc; . Phần này cung cấp một phương pháp làm việc với biểu mẫu trang trí của 29. Các bước sau đây cho bạn thấy cách sử dụng cơ bản của 29. Ví dụ dưới đây nêu bật cách sử dụng cơ bản của một bản vá khi thử nghiệm
Bạn cần nhập chức năng 39 để thực hiện kiểm tra. Gói 40 cung cấp khả năng sử dụng trình trang trí 29 và 95 làm đối tượng thay thế. Bạn cũng cần truy cập vào tệp đang được kiểm tra (không phải tệp lớp, mà là tệp đang thực sự sử dụng đối tượng). Để sử dụng 43, bạn cần chỉ định những điều sau
Điều quan trọng là chuyển thông tin này dưới dạng một chuỗi để thông báo lỗi của bạn chứa thông tin có thể giúp bạn xác định nguồn gốc của lỗi Để sử dụng một mô phỏng (trong trường hợp này là ___147), hãy cung cấp một tham số cho nó như một phần của lệnh gọi phương thức thử nghiệm. Ví dụ này thực sự chứng minh rằng bạn đang sử dụng 95 để thay thế cho 33 bằng cách đưa ra nhiều xác nhận khác nhau. Vì vậy, cho đến khi bạn thực sự gọi 35, thì 47 vẫn chưa được gọi để thay thế nó. Khi bạn gọi 35 trong mã, bạn có thể bắt đầu sử dụng các tính năng khác nhau của 95 để xác định chức năng mô phỏng đã thực hiện như thế nàoMã này cung cấp hai câu lệnh in để đảm bảo rằng mã đã chạy như mong đợi. Chạy thành công không xuất bất kỳ thông tin nào ngoại trừ thông báo thành công. Thông báo thành công có thể không chứa nhiều thông tin mà bạn có thể cần để gỡ lỗi. Hai dòng mã cuối cùng trong tệp 38 bắt đầu quá trình thử nghiệm. Có một số phương pháp để bắt đầu một bài kiểm tra. Một phương pháp như vậy được hiển thị dưới đâyTại dòng lệnh gõ 55 và nhấn Enter. Đầu ra thử nghiệm được hiển thị dưới đây 8Phần kết luậnMocking giúp bạn có thể kiểm tra ứng dụng của mình khi bạn phát triển nó, giúp giảm nợ kỹ thuật và chi phí phát triển. Mặc dù sơ khai và giả mạo có vị trí của chúng trong bộ công cụ kiểm tra của bạn, nhưng chế nhạo linh hoạt hơn đáng kể so với các phương pháp khác. Mocking có thể giảm đáng kể thời gian dọn dẹp cho bộ thử nghiệm của bạn sau này. Sử dụng trình trang trí 29 trong một tệp riêng biệt, như đã trình bày trong phần trước, giúp loại bỏ nhu cầu dọn dẹp mã sau này. Điều này đặc biệt xảy ra khi làm việc với các ứng dụng phức tạp
Làm thế nào để giả lập bài kiểm tra đơn vị Python?Làm cách nào để giả lập bằng Python? . Viết bài kiểm tra như thể bạn đang sử dụng các API bên ngoài thực sự Trong hàm đang thử nghiệm, hãy xác định lệnh gọi API nào cần được mô phỏng; Trong chức năng kiểm tra, hãy vá các cuộc gọi API Thiết lập phản hồi đối tượng MagicMock Chạy thử nghiệm của bạn Thử nghiệm đơn vị với ví dụ Python là gì?Mô-đun unittest trong Python được sử dụng để kiểm tra một đơn vị mã nguồn. Giả sử, bạn cần kiểm tra dự án của mình.
. Kết quả kiểm tra đơn vị Python & Chức năng cơ bản Làm cách nào để mô phỏng chức năng trong Python?lớp học nhạo báng
. Điều này có nghĩa là bạn truy cập “phiên bản mô phỏng” bằng cách xem giá trị trả về của lớp mô phỏng. Trong ví dụ bên dưới, chúng ta có một hàm some_function khởi tạo Foo và gọi một phương thức trên đó. Cuộc gọi đến patch() thay thế lớp Foo bằng một bản giả
Mô hình unittest hoạt động như thế nào?đơn vị nhất. mock cung cấp một cơ chế mạnh mẽ để mô phỏng các đối tượng, được gọi là patch(), tìm kiếm một đối tượng trong một mô-đun nhất định và thay thế đối tượng đó bằng Mô phỏng . Thông thường, bạn sử dụng patch() làm công cụ trang trí hoặc trình quản lý bối cảnh để cung cấp phạm vi mà bạn sẽ chế nhạo đối tượng đích. |