Kiểm thử đơn vị là gì?
Unit Testing trong Python được thực hiện để xác định lỗi sớm trong giai đoạn phát triển của ứng dụng khi lỗi ít tái phát hơn và sửa chữa ít tốn kém hơn.
Bài kiểm tra đơn vị là bài kiểm tra cấp độ mã được viết theo kịch bản được thiết kế bằng Python để xác minh một "đơn vị" chức năng nhỏ. Unit test là một khuôn khổ hướng đối tượng dựa trên các đồ đạc thử nghiệm.
Kỹ thuật kiểm tra đơn vị Python
Kiểm thử đơn vị Python chủ yếu liên quan đến việc kiểm tra một mô-đun cụ thể mà không cần truy cập vào bất kỳ mã phụ thuộc nào. Các nhà phát triển có thể sử dụng các kỹ thuật như sơ khai và mô phỏng để tách mã thành "đơn vị" và chạy thử nghiệm cấp đơn vị trên từng phần riêng lẻ.
- Phát triển theo hướng kiểm tra TDD: Kiểm thử đơn vị nên được thực hiện cùng với Python và để các nhà phát triển sử dụng phương pháp Phát triển theo hướng kiểm tra. Trong phương pháp TDD, trước tiên bạn thiết kế các bài kiểm tra Đơn vị Python và chỉ sau đó bạn mới tiếp tục viết mã sẽ triển khai tính năng này.
- Stubs và Mocks: Chúng là hai kỹ thuật chính mô phỏng các phương pháp giả mạo đang được thử nghiệm. Một Stub được sử dụng để điền vào một số phụ thuộc cần thiết để kiểm tra đơn vị chạy chính xác. Mặt khác, một Mock là một đối tượng giả mạo chạy các bài kiểm tra mà chúng tôi xác nhận.
Mục đích của cả hai phương pháp đều giống nhau để loại bỏ việc kiểm tra tất cả các phụ thuộc của một lớp hoặc hàm.
Khung kiểm tra đơn vị Python
Để làm cho quá trình Kiểm thử đơn vị dễ dàng hơn và cải thiện chất lượng dự án của bạn, bạn nên sử dụng Khung kiểm tra đơn vị Python. Khung kiểm tra đơn vị bao gồm
- PyUnit: PyUnit hỗ trợ đồ đạc, trường hợp thử nghiệm, bộ thử nghiệm và trình chạy thử nghiệm để kiểm tra tự động mã. Trong PyUnit, bạn có thể tổ chức các trường hợp thử nghiệm thành các dãy có cùng đồ đạc
- Nose: Các plug-in tích hợp của Nose giúp bạn nắm bắt đầu ra, phạm vi mã, tài liệu, v.v. Cú pháp của Nose khá đơn giản hơn và giảm bớt các rào cản đối với các bài kiểm tra viết. Nó mở rộng Python đơn nhất để làm cho việc kiểm tra dễ dàng hơn.
- Doctest: Tập lệnh kiểm tra Doctest ở dạng docstring với chức năng nhỏ ở cuối tệp. Doctest cho phép bạn kiểm tra mã của mình bằng cách chạy các ví dụ có trong tài liệu và xác minh rằng chúng trả lại kết quả mong đợi. Trường hợp sử dụng của học thuyết ít chi tiết hơn và không bắt các trường hợp đặc biệt. Chúng hữu ích như một tài liệu biểu đạt về trường hợp sử dụng chính của một mô-đun và các thành phần của nó.
Kiểm tra đơn vị với PyUnit
Pyunit là một cổng Python của JUnit. Là một phần của Pyunit, trong mô-đun đơn nhất có năm lớp chính.
- Lớp TestCase : Lớp TestCase chịu các quy trình kiểm tra và cung cấp các móc để thực hiện từng quy trình và dọn dẹp sau đó
- Lớp TestSuite : Nó phục vụ như một bộ chứa bộ sưu tập và nó có thể sở hữu nhiều đối tượng testcase và nhiều đối tượng testsuites
- Lớp TestLoader : Lớp này tải các trường hợp và bộ thử nghiệm được xác định cục bộ hoặc từ một tệp bên ngoài. Nó phát ra một đối tượng testsuite sở hữu những bộ và trường hợp đó
- Lớp TextTestRunner : Để chạy các bài kiểm tra, nó phục vụ một nền tảng tiêu chuẩn để thực hiện các bài kiểm tra
- Lớp TestResults : Nó cung cấp một vùng chứa tiêu chuẩn cho các kết quả thử nghiệm
Thiết kế một trường hợp thử nghiệm cho Thử nghiệm Python bằng PyUnit
Kiểm thử đơn vị cung cấp một lớp cơ sở, trường hợp thử nghiệm, có thể được sử dụng để tạo các trường hợp thử nghiệm mới. Để thiết kế trường hợp thử nghiệm, có ba bộ phương pháp được sử dụng là
unittest.TestCase
setUp()teardown()skipTest(aMesg:string)fail(aMesg:string)id():stringshortDescription():string
Trong tập đầu tiên là các móc kiểm tra trước và sau. Phương thức setup () bắt đầu trước mỗi quy trình thử nghiệm, teardown () sau quy trình.
Bộ phương pháp thứ hai kiểm soát việc thực thi thử nghiệm. Cả hai phương pháp đều lấy một chuỗi thông báo làm đầu vào và cả hai đều hủy bỏ quá trình kiểm tra đang diễn ra. Nhưng phương thức bỏ qua () hủy bỏ thử nghiệm hiện tại trong khi phương thức fail () hoàn toàn không thực hiện được.
Phương pháp cuối cùng hoặc thứ ba giúp xác định bài kiểm tra. Phương thức id () trả về một chuỗi bao gồm tên của đối tượng testcase và của quy trình kiểm tra. Và phương thức shortDescription () trả về nhận xét docstr khi bắt đầu mỗi quy trình kiểm tra.
Ưu điểm của việc sử dụng thử nghiệm đơn vị Python
- Nó giúp bạn phát hiện sớm các lỗi trong chu kỳ phát triển
- Nó giúp bạn viết các chương trình tốt hơn
- Nó dễ dàng đồng bộ hóa với các phương pháp và công cụ kiểm tra khác
- Nó sẽ có ít lỗi hơn
- Nó dễ dàng sửa đổi hơn trong tương lai với rất ít hậu quả