Tạo test case tự động python
Kiểm tra đơn vị là chìa khóa để phát triển mã chất lượng. Có rất nhiều thư viện và dịch vụ có sẵn mà bạn có thể sử dụng để kiểm tra hoàn hảo mã Python của mình. Tuy nhiên, thử nghiệm đơn vị “truyền thống” tốn nhiều thời gian và không có khả năng bao quát toàn bộ các trường hợp mà mã của bạn được cho là có thể xử lý. Trong bài đăng này, tôi sẽ chỉ cho bạn cách sử dụng kiểm tra dựa trên thuộc tính với Giả thuyết để tự động kiểm tra mã Python của bạn. Tôi cũng thảo luận về một số ưu điểm của việc sử dụng khung thử nghiệm dựa trên thuộc tính Show
Kiểm tra đơn vị liên quan đến việc kiểm tra các thành phần riêng lẻ trong mã của bạn. Một bài kiểm tra đơn vị điển hình lấy dữ liệu đầu vào, chạy nó thông qua một đoạn mã và kiểm tra kết quả dựa trên một số kết quả mong đợi được xác định trước Giả thuyết làm một cái gì đó khác nhau. Nó là một tài sản dựa trên (hoặc. khuôn khổ thử nghiệm “tạo ra”). Thử nghiệm dựa trên thuộc tính liên quan đến việc xác định các kỳ vọng chung về mã của bạn thay vì các ví dụ cụ thể. Ví dụ: nếu bạn có một số mã để tính tổng VAT cho một số giao dịch, bạn có thể xác định một loạt các số giả định với số tiền VAT tương ứng của chúng ($100 giao dịch → $xx. xx tax) và đưa nó vào thử nghiệm. Tuy nhiên, nếu bạn biết rằng VAT, giả sử là 20 phần trăm, thử nghiệm dựa trên tài sản sẽ xác minh rằng tổng VAT luôn là 20 phần trăm của tổng số tiền Giả thuyết được xây dựng trên những nguyên tắc này. Nó tạo dữ liệu đầu vào tùy ý theo một số thông số kỹ thuật và sau đó đưa dữ liệu đó vào thử nghiệm. Hơn nữa, khi Giả thuyết tìm thấy một ví dụ gây ra lỗi xác nhận, nó sẽ cố gắng đơn giản hóa ví dụ đó và tìm trường hợp lỗi nhỏ nhất — một quy trình được gọi là “thu nhỏ”. Về cơ bản, giả thuyết sẽ cố gắng “phá vỡ” mã của bạn. Do đó, các thử nghiệm của bạn sẽ bao gồm một phần lớn hơn nhiều không gian miền của bạn với cùng một lượng mã. Và, bạn nhất định tìm thấy những trường hợp khó khăn mà bạn thậm chí chưa từng nghĩ tới Bắt đầu với giả thuyếtHãy xem Giả thuyết hoạt động như thế nào trong thực tế. Giả thuyết có ba thành phần chính. mã mà bạn đang thử nghiệm, các chiến lược xác định dữ liệu thử nghiệm của bạn và một chức năng kiểm tra mã của bạn bằng cách sử dụng các chiến lược Giả sử chúng ta có một đoạn mã Python đơn giản (và không nhạy cảm) để chuyển đổi một giá trị float thành một số nguyên Mã này có thuộc tính rõ ràng. kết quả phải luôn là một kiểu số nguyên chiến lượcĐể kiểm tra mã này, trước tiên chúng ta sẽ xác định một “chiến lược”. Một chiến lược xác định dữ liệu mà Giả thuyết tạo ra để thử nghiệm và cách các ví dụ được “đơn giản hóa”. Trong mã của chúng tôi, chúng tôi chỉ xác định các tham số của dữ liệu; . “co lại”) là nội bộ của Giả thuyết Chúng ta sẽ bắt đầu với một chiến lược tạo ra giá trị float giữa 0. 0 và 10. 0 (bao gồm). Chúng tôi xác định điều này trong một tệp riêng có tên là Rất nhiều thời gian có thể dành cho việc xác định các chiến lược, và trên thực tế, nó nên. Toàn bộ điểm của thử nghiệm dựa trên thuộc tính với Giả thuyết là bạn xác định các tham số mà dữ liệu được tạo ra, để sau đó bạn cho phép thử nghiệm tự động của mình thực hiện phép thuật của nó. Bạn càng dành nhiều thời gian cho việc này, bài kiểm tra của bạn sẽ càng tốt hơn (nghĩ rằng. “đầu tư cao; Mang mã của bạn và các chiến lược của bạn lại với nhau. Chạy thử nghiệm với Giả thuyếtSau khi xác định chiến lược của mình, chúng tôi thêm một đoạn mã nhỏ để chuyển các ví dụ do Giả thuyết tạo ra cho hàm của mình và khẳng định điều gì đó về kết quả được yêu cầu ("thuộc tính") của mã mà chúng tôi muốn kiểm tra. Đoạn mã dưới đây rút ra một giá trị float từ đối tượng lớp dữ liệu Cấu hình giả thuyết. Cài đặt hữu íchTrước khi chúng tôi chạy mô-đun thử nghiệm mà chúng tôi đã phát triển ở trên, hãy xem lại một số cấu hình mà chúng tôi có thể sử dụng để điều chỉnh Giả thuyết cho trường hợp sử dụng của chúng tôi. Giả thuyết đi kèm với một loạt các cài đặt. Các cài đặt này có thể được chuyển đến chức năng kiểm tra của bạn bằng cách sử dụng trình trang trí
Hãy sử dụng các cài đặt này trong mô-đun thử nghiệm của chúng tôi. Với những dòng mã đơn giản này, giờ đây chúng ta có thể tiếp tục và đưa hàng nghìn ví dụ vào hàm của mình để xác minh rằng nó hoạt động như mong đợi. Bạn có thể chạy thử nghiệm từ thiết bị đầu cuối (_______10) hoặc nếu bạn sử dụng IDE như Pycharm, bằng cách chỉ định cấu hình pytest thích hợp cho mã của bạn Sử dụng cài đặt Giả thuyết để kiểm tra mã Python dựa trên thuộc tínhUpping trò chơi của bạn. Sử dụng các chiến lược tổng hợpCho đến nay, các ví dụ tôi đã sử dụng rất đơn giản. Giả thuyết có thể xử lý các trường hợp thử nghiệm phức tạp hơn nhiều bằng cách sử dụng các chiến lược tổng hợp, như tên gợi ý, cho phép bạn kết hợp các chiến lược để tạo các ví dụ thử nghiệm. Vì vậy, hãy bắt đầu trò chơi của chúng ta và sử dụng Giả thuyết trong một bối cảnh phức tạp hơn Giả sử bạn đã phát triển một đoạn mã để tính toán giá trị phần trăm của một mảng. Có rất nhiều thư viện Python sẽ làm điều này cho bạn, nhưng giả sử bạn đặc biệt đam mê phần trăm và chỉ muốn triển khai phần mềm của riêng bạn. Trong ví dụ này, mục đích của chúng tôi là so sánh giải pháp của chúng tôi với triển khai hiện tại. Với suy nghĩ này, chúng ta có thể định nghĩa hai thuộc tính đơn giản của mã này mà chúng ta có thể kiểm tra
Hãy bắt đầu với chức năng phần trăm của chúng tôi. Ở đây, chúng tôi triển khai một phiên bản sử dụng phép nội suy trung điểm. Hàm chấp nhận một mảng các giá trị số nguyên hoặc float (_______11), sắp xếp nó, xác định giá trị sàn và giá trần dựa trên phân vị đã chỉ định ( Bây giờ, hãy chuyển sang chiến lược của chúng tôi, đó là định nghĩa về dữ liệu mà chúng tôi tạo để thử nghiệm. Ở đây, chúng tôi định nghĩa một hàm có tên là Cuối cùng, chúng ta có thể sử dụng chiến lược tổng hợp của mình trong mô-đun thử nghiệm. Trong mô-đun này, chúng tôi chỉ định cài đặt chiến lược của mình ( Trước khi bạn bắt đầu phát triển các bài kiểm tra đơn vị của riêng mình, có một số điều bạn cần lưu ý. Thử nghiệm dựa trên thuộc tính hoạt động tốt trong các ngữ cảnh cụ thể. Đó là một khung mạnh mẽ khi các thuộc tính của một đoạn mã được xác định rõ ràng và dễ dàng, nghĩa là “phần x trong mã của tôi cần tạo ra kết quả có thuộc tính y”. Khi việc xác định các điều kiện của câu lệnh “khẳng định” cũng phức tạp như mã mà bạn đang cố gắng kiểm tra, thì cuối cùng bạn sẽ triển khai lại mã hiện tại của mình Có hai triển khai song song có thể phù hợp trong một số trường hợp, chẳng hạn như khi bạn đã tạo một đoạn mã mới hoặc triển khai lại thứ gì đó bằng một khung mới mà bạn cần so sánh với các triển khai hiện có, như minh họa trong ví dụ trên. Tuy nhiên, trong hầu hết các trường hợp, nó không phải là. bạn sẽ lãng phí thời gian và tài nguyên, và cuối cùng phải duy trì hai đoạn mã thực hiện chính xác cùng một việc Ngay cả khi tự động hóa thử nghiệm của bạn, bạn nên chỉ đạo một khóa học trung gian giữa thử nghiệm đơn vị “truyền thống” và thử nghiệm dựa trên thuộc tính. Bạn sẽ muốn tránh làm cho các bài kiểm tra của mình quá nhiều “hộp đen” và đảm bảo rằng bạn bao gồm các trường hợp rõ ràng, đặc biệt là ở giai đoạn đầu của quá trình phát triển. Tạo ít nhất một vài kịch bản được hiểu rõ luôn được khuyến nghị. Và, việc kết hợp các trường hợp kiểm thử “thủ công” của riêng bạn với kiểm thử tự động sẽ là một chặng đường dài để cải thiện phạm vi kiểm thử của bạn và có thể cải thiện đáng kể mã của bạn Cảm ơn vì đã đọc. Bạn muốn sử dụng công cụ Python nào để cải thiện chất lượng mã? Hỗ trợ công việc của tôi. Nếu bạn thích bài viết này và bạn muốn hỗ trợ công việc của tôi, vui lòng cân nhắc trở thành thành viên trả phí của Phương tiện thông qua trang giới thiệu của tôi. Giá của đăng ký là như nhau nếu bạn đăng ký qua trang giới thiệu của tôi, nhưng tôi sẽ nhận được một phần phí thành viên hàng tháng của bạn Nếu bạn thích bài viết này, đây là một số bài viết khác mà bạn có thể thưởng thức Cách cải thiện kiểu mã Python của bạn với pre-commit hooksThực thi kiểu mã là chìa khóa để hợp lý hóa các quy trình phát triển và đây là cách tự động hóa nóTrung bình. com Tự động hóa thẻ phiên bản và nhật ký thay đổi cho các dự án Python của bạnHướng dẫn thực hành để tự động hóa các thẻ phiên bản và nhật ký thay đổi dựa trên lịch sử cam kết của dự án với commitizenhướng tới khoa học dữ liệu. com Đơn giản hóa mã Python của bạn. Tự động hóa phân tích độ phức tạp của mã với WilyĐây là cách biến việc đánh giá độ phức tạp của mã thành một phần trong quy trình phát triển Python của bạnhướng tới khoa học dữ liệu. com Vui lòng đọc kỹ tuyên bố từ chối trách nhiệm này trước khi dựa vào bất kỳ nội dung nào trong các bài viết của tôi trên Medium. com Làm cách nào để sử dụng pynguin trong Python?Phát triển bằng PyCharm. . Nhập pynguin vào PyCharm Để thơ hỗ trợ cấu hình môi trường ảo. Nếu bạn sử dụng phiên bản PyCharm trước năm 2021. 3 , bạn phải cài hỗ trợ thơ như một plugin Đặt trình chạy thử nghiệm mặc định thành pytest Đặt định dạng DocString thành Google Làm cách nào để kiểm tra tập lệnh Python?1 Cách viết và kiểm tra chương trình Python . Viết chương trình Python để nói “Xin chào, Thế giới. ” Xử lý các đối số dòng lệnh bằng cách sử dụng argparse Chạy thử nghiệm mã với Pytest Tìm hiểu về $PATH Sử dụng các công cụ như YAPF và Black để định dạng mã Sử dụng các công cụ như Flake8 và Pylint để tìm các vấn đề trong mã Các phương pháp hay nhất để thử nghiệm đơn vị Python là gì?Kiểm tra đơn vị Python. Các phương pháp hay nhất nên tuân theo . Tránh toàn cầu cấp mô-đun. . Toàn cầu không phải lúc nào cũng xấu. . Sử dụng tiêm phụ thuộc Làm cách nào để kiểm tra các chức năng trong Python?Trước tiên, bạn cần tạo một tệp thử nghiệm. Sau đó nhập mô-đun unittest, xác định lớp thử nghiệm kế thừa từ unittest. TestCase, và cuối cùng, viết một loạt các phương thức để kiểm tra tất cả các trường hợp hành vi của chức năng của bạn. Đầu tiên, bạn cần nhập một unittest và chức năng bạn muốn kiểm tra, formatted_name() |