Thử nghiệm đơn vị python
Một đơn vị là một đoạn mã cụ thể sẽ được kiểm tra, chẳng hạn như một chức năng hoặc một lớp. Các bài kiểm tra đơn vị sau đó là các đoạn mã khác thực hiện cụ thể đơn vị mã với đầy đủ các đầu vào khác nhau, bao gồm các trường hợp ranh giới và cạnh Show
Ví dụ: giả sử bạn có chức năng xác thực định dạng của số tài khoản mà người dùng nhập vào biểu mẫu web
Các bài kiểm tra đơn vị chỉ quan tâm đến giao diện của đơn vị—các đối số và giá trị trả về của đơn vị—không liên quan đến việc triển khai của nó (đó là lý do tại sao không có mã nào được hiển thị ở đây trong thân hàm; thông thường, bạn sẽ sử dụng các thư viện đã được kiểm tra tốt khác để giúp triển khai chức năng . Trong ví dụ này, hàm chấp nhận bất kỳ chuỗi nào và trả về true nếu chuỗi đó chứa số tài khoản được định dạng đúng, ngược lại là false Để kiểm tra kỹ lưỡng chức năng này, bạn muốn đưa vào nó mọi đầu vào có thể tưởng tượng được. chuỗi hợp lệ, chuỗi nhập sai (tắt một hoặc hai ký tự hoặc chứa ký tự không hợp lệ), chuỗi quá ngắn hoặc quá dài, chuỗi trống, đối số null, chuỗi chứa ký tự điều khiển (mã không phải văn bản), chuỗi chứa HTML, chuỗi . Điều đặc biệt quan trọng là kiểm tra các trường hợp bảo mật như tấn công tiêm chích nếu chuỗi đã xác thực sau đó được sử dụng trong các truy vấn cơ sở dữ liệu hoặc được hiển thị trong giao diện người dùng của ứng dụng Đối với mỗi đầu vào, sau đó bạn xác định (hoặc các giá trị) giá trị trả về dự kiến của hàm. Trong ví dụ này, một lần nữa, hàm chỉ trả về giá trị true cho các chuỗi được định dạng đúng. (Cho dù bản thân số đó có phải là tài khoản thực hay không là một vấn đề khác sẽ được xử lý ở nơi khác thông qua truy vấn cơ sở dữ liệu. ) Với tất cả các đối số và giá trị trả về dự kiến trong tay, bây giờ bạn tự viết các bài kiểm tra, đó là các đoạn mã gọi hàm với một đầu vào cụ thể, sau đó so sánh giá trị trả về thực tế với giá trị trả về dự kiến (sự so sánh này được gọi là một xác nhận
Cấu trúc chính xác của mã phụ thuộc vào khung thử nghiệm mà bạn đang sử dụng và các ví dụ cụ thể sẽ được cung cấp ở phần sau của bài viết này. Trong mọi trường hợp, như bạn có thể thấy, mỗi bài kiểm tra đều đơn giản. gọi hàm với một đối số và xác nhận giá trị trả về dự kiến Kết quả tổng hợp của tất cả các thử nghiệm là báo cáo thử nghiệm của bạn, báo cáo này cho bạn biết liệu chức năng (đơn vị) có hoạt động như mong đợi trong tất cả các trường hợp thử nghiệm hay không. Nghĩa là, khi một thiết bị vượt qua tất cả các bài kiểm tra, bạn có thể yên tâm rằng thiết bị đó hoạt động bình thường. (Thực hành phát triển dựa trên thử nghiệm là nơi bạn thực sự viết các bài kiểm tra trước, sau đó viết mã để vượt qua các bài kiểm tra ngày càng nhiều hơn cho đến khi tất cả chúng đều vượt qua. ) Vì các bài kiểm tra đơn vị là các đoạn mã nhỏ, tách biệt (trong kiểm tra đơn vị, bạn tránh được các phụ thuộc bên ngoài và sử dụng dữ liệu giả hoặc các đầu vào mô phỏng khác), nên chúng chạy nhanh và không tốn kém. Đặc điểm này có nghĩa là bạn có thể chạy thử nghiệm đơn vị sớm và thường xuyên. Các nhà phát triển thường chạy thử nghiệm đơn vị ngay cả trước khi đưa mã vào kho lưu trữ; . Nhiều hệ thống tích hợp liên tục cũng chạy thử nghiệm đơn vị sau mỗi lần xây dựng. Chạy thử nghiệm đơn vị sớm và thường có nghĩa là bạn nhanh chóng nắm bắt được hồi quy, đó là những thay đổi không mong muốn trong hành vi của mã mà trước đó đã vượt qua tất cả các thử nghiệm đơn vị của nó. Bởi vì lỗi thử nghiệm có thể dễ dàng bắt nguồn từ một thay đổi mã cụ thể, nên dễ dàng tìm và khắc phục nguyên nhân gây ra lỗi, điều này chắc chắn tốt hơn so với việc phát hiện ra sự cố sau này trong quy trình Để biết thông tin cơ bản chung về kiểm tra đơn vị, hãy đọc Kiểm tra đơn vị trên Wikipedia. Để biết các ví dụ kiểm tra đơn vị hữu ích, bạn có thể xem lại https. //github. com/gwtw/py-sorting, một kho lưu trữ với các thử nghiệm cho các thuật toán sắp xếp khác nhau Hướng dẫn thử nghiệm ví dụCác bài kiểm tra Python là các lớp Python nằm trong các tệp riêng biệt với mã đang được kiểm tra. Mỗi khung kiểm tra chỉ định cấu trúc và đặt tên cho các bài kiểm tra và tệp kiểm tra. Sau khi bạn viết các bài kiểm tra và kích hoạt khung kiểm tra, Mã VS sẽ định vị các bài kiểm tra đó và cung cấp cho bạn các lệnh khác nhau để chạy và gỡ lỗi chúng Đối với phần này, hãy tạo một thư mục và mở nó trong Mã VS. Sau đó tạo một tệp có tên 1 với đoạn mã sau để được kiểm tra
Với mã này, bạn có thể trải nghiệm làm việc với các thử nghiệm trong Mã VS như được mô tả trong các phần tiếp theo Định cấu hình kiểm traKhi bạn đã cài đặt tiện ích mở rộng Python và mở tệp Python trong trình chỉnh sửa, biểu tượng cốc thử nghiệm sẽ được hiển thị trên thanh Hoạt động Mã VS. Biểu tượng cốc dành cho chế độ xem Test Explorer. Khi mở Test Explorer, bạn sẽ thấy nút Cấu hình kiểm tra nếu bạn chưa bật khung kiểm tra. Khi bạn chọn Định cấu hình kiểm tra, bạn sẽ được nhắc chọn khung kiểm tra và thư mục chứa các kiểm tra. Nếu bạn đang sử dụng unittest, bạn cũng sẽ được yêu cầu chọn mẫu toàn cầu tệp được sử dụng để xác định các tệp thử nghiệm của mình Bạn có thể định cấu hình các bài kiểm tra của mình bất cứ lúc nào bằng cách sử dụng Python. Cấu hình lệnh Kiểm tra từ. Bạn cũng có thể định cấu hình thử nghiệm theo cách thủ công bằng cách đặt 2 hoặc 3 thành true. Mỗi khung cũng có các cài đặt cấu hình cụ thể như được mô tả bên dưới cho các thư mục và mẫu của chúngNếu cả hai khung được bật, thì tiện ích mở rộng Python sẽ chỉ chạy 4Khi bạn bật khung thử nghiệm, Mã VS sẽ nhắc bạn cài đặt gói khung nếu nó chưa có trong môi trường hiện đang được kích hoạt Tạo bài kiểm traMỗi khung kiểm tra có các quy ước riêng để đặt tên tệp kiểm tra và cấu trúc các kiểm tra bên trong, như được mô tả trong các phần sau. Mỗi trường hợp bao gồm hai phương pháp thử nghiệm, một trong số đó được cố tình đặt thành không thành công cho mục đích trình diễn Các bài kiểm tra trong unittestTạo một tệp có tên 5 chứa một lớp kiểm tra với hai phương thức kiểm tra________số 8_______Các thử nghiệm trong pytestTạo một tệp có tên 6 chứa hai phương thức kiểm tra
Khám phá thử nghiệmTheo mặc định, tiện ích mở rộng Python sẽ cố gắng khám phá các bài kiểm tra sau khi bạn bật khung. Bạn có thể kích hoạt khám phá kiểm tra bất kỳ lúc nào bằng cách sử dụng Kiểm tra. Làm mới lệnh Kiểm tra 7 được đặt thành 8 theo mặc định, nghĩa là khám phá kiểm tra cũng được thực hiện tự động bất cứ khi nào bạn thêm, xóa hoặc cập nhật bất kỳ tệp Python nào trong không gian làm việc. Để tắt tính năng này, hãy đặt giá trị thành 9. Bạn sẽ cần tải lại cửa sổ để cài đặt này có hiệu lựcKhám phá thử nghiệm áp dụng các mẫu khám phá cho khung hiện tại (có thể được tùy chỉnh bằng cách sử dụng). Hành vi mặc định như sau
Nếu quá trình khám phá thử nghiệm thành công, bạn sẽ thấy các thử nghiệm được liệt kê trong Trình khám phá thử nghiệm Nếu phát hiện không thành công (ví dụ: khung thử nghiệm chưa được cài đặt hoặc bạn gặp lỗi cú pháp trong tệp thử nghiệm của mình), bạn sẽ thấy thông báo lỗi hiển thị trong Trình khám phá thử nghiệm. Bạn có thể kiểm tra bảng đầu ra của Python để xem toàn bộ thông báo lỗi (sử dụng lệnh menu View > Output để hiển thị bảng đầu ra, sau đó chọn Python từ danh sách thả xuống ở bên phải) Khi Mã VS nhận ra các bài kiểm tra, nó cung cấp một số cách để chạy các bài kiểm tra đó như được mô tả trong Chạy thử nghiệmBạn có thể chạy thử nghiệm bằng bất kỳ hành động nào sau đây
Sau khi chạy thử, VS Code hiển thị kết quả trực tiếp trong trình chỉnh sửa dưới dạng trang trí máng xối. Các lần kiểm tra không thành công cũng sẽ được đánh dấu trong trình chỉnh sửa, với Chế độ xem Peek hiển thị thông báo lỗi chạy kiểm tra và lịch sử của tất cả các lần chạy kiểm tra. Bạn có thể nhấn Thoát để loại bỏ chế độ xem và bạn có thể tắt chế độ xem bằng cách mở Cài đặt người dùng (Tùy chọn. Mở lệnh Cài đặt (UI) trong Bảng lệnh) và thay đổi giá trị của Kiểm tra. Cài đặt Tự động Mở Peek View thành 7. Trong Test Explorer, kết quả được hiển thị cho các bài kiểm tra riêng lẻ và bất kỳ lớp và tệp nào chứa các bài kiểm tra đó Mã VS cũng hiển thị kết quả kiểm tra trong bảng đầu ra Nhật ký kiểm tra Python Chạy thử nghiệm song songHỗ trợ chạy thử nghiệm song song với pytest có sẵn thông qua gói 8. Để kích hoạt thử nghiệm song song
kiểm tra gỡ lỗiĐôi khi, bạn có thể cần phải xem qua và phân tích các kiểm tra trong trình gỡ lỗi, vì bản thân các kiểm tra đó có lỗi mã mà bạn cần theo dõi hoặc để hiểu rõ hơn lý do tại sao một vùng mã đang được kiểm tra không thành công Ví dụ: các hàm 2 được cung cấp trước đó không thành công vì bản thân xác nhận bị lỗi. Các bước sau đây trình bày cách phân tích bài kiểm tra
Bạn có thể sử dụng các lệnh sau từ Bảng lệnh để kiểm tra gỡ lỗi
Bạn cũng có thể thay đổi hành vi mặc định là nhấp vào trang trí máng xối để gỡ lỗi kiểm tra thay vì chạy, bằng cách thay đổi giá trị cài đặt 5 thành 6 trong tệp 7 của bạnTrình gỡ lỗi hoạt động tương tự đối với các bài kiểm tra cũng như đối với các mã Python khác, bao gồm các điểm dừng, kiểm tra biến, v.v. Để tùy chỉnh cài đặt cho kiểm tra gỡ lỗi, bạn có thể chỉ định 8 trong tệp 9 trong thư mục 0 từ không gian làm việc của bạn. Cấu hình này sẽ được sử dụng khi bạn chạy Test. Gỡ lỗi tất cả các bài kiểm tra, kiểm tra. Kiểm tra gỡ lỗi trong tệp hiện tại và kiểm tra. Kiểm tra gỡ lỗi tại các lệnh Con trỏVí dụ: cấu hình bên dưới trong tệp 9 vô hiệu hóa cài đặt 2 để kiểm tra gỡ lỗi 0Nếu bạn có nhiều mục nhập cấu hình với 8, định nghĩa đầu tiên sẽ được sử dụng vì chúng tôi hiện không hỗ trợ nhiều định nghĩa cho loại yêu cầu nàyĐể biết thêm thông tin về cách gỡ lỗi, hãy xem Cấu hình gỡ lỗi Python và bài viết chung về Gỡ lỗi mã VS Lệnh kiểm traDưới đây là tất cả các lệnh được hỗ trợ để thử nghiệm với phần mở rộng Python trong VS Code Tên lệnh Mô tảPython. Cấu hình kiểm traĐịnh cấu hình khung kiểm tra sẽ được sử dụng với tiện ích mở rộng Python. Bài kiểm tra. Xóa tất cả kết quảXóa tất cả trạng thái kiểm tra vì giao diện người dùng vẫn duy trì kết quả kiểm tra qua các phiên. Bài kiểm tra. Gỡ lỗi các bài kiểm tra không thành côngGỡ lỗi các bài kiểm tra không thành công trong lần chạy thử nghiệm gần đây nhất. Bài kiểm tra. Gỡ lỗi Lần chạy cuối cùngCác bài kiểm tra gỡ lỗi đã được thực hiện trong lần chạy thử gần đây nhất. Bài kiểm tra. Kiểm tra Gỡ lỗi tại Con trỏ Gỡ lỗi phương pháp kiểm tra mà bạn tập trung con trỏ vào trình chỉnh sửa. Tương tự với Python. Phương pháp kiểm tra gỡ lỗi. trên các phiên bản trước năm 2021. 9. Bài kiểm tra. Kiểm tra gỡ lỗi trong tệp hiện tại Kiểm tra gỡ lỗi trong tệp hiện đang tập trung vào trình chỉnh sửa. Bài kiểm tra. Chuyển đến phần Thử nghiệm thất bại tiếp theoNếu chế độ xem nhanh lỗi đang mở, hãy mở và di chuyển đến chế độ xem nhanh của thử nghiệm tiếp theo trong trình khám phá không thành công. Bài kiểm tra. Đi tới Lỗi kiểm tra trước đóNếu chế độ xem nhanh lỗi đang mở, hãy mở và di chuyển đến chế độ xem nhanh của kiểm tra trước đó trong trình khám phá đã thất bại. Bài kiểm tra. Đầu ra PeekMở chế độ xem lỗi cho một phương pháp kiểm tra không thành công. Bài kiểm tra. Làm mới TestsThực hiện khám phá kiểm tra và cập nhật Test Explorer để phản ánh mọi thay đổi, bổ sung hoặc xóa kiểm tra. Tương tự với Python. Khám phá các Thử nghiệm trên các phiên bản trước năm 2021. 9. Bài kiểm tra. Chạy lại các bài kiểm tra thất bạiChạy các bài kiểm tra không thành công trong lần chạy thử nghiệm gần đây nhất. Tương tự với Python. Chạy Thử nghiệm không thành công trên các phiên bản trước năm 2021. 9. Bài kiểm tra. Chạy lại các bài kiểm tra RunDebug cuối cùng đã được thực hiện trong lần chạy thử nghiệm gần đây nhất. Bài kiểm tra. Chạy tất cả các bài kiểm tra Chạy tất cả các bài kiểm tra đã phát hiện. Tương đương với Python. Chạy tất cả các thử nghiệm trên các phiên bản trước năm 2021. 9. Bài kiểm tra. Chạy thử nghiệm tại con trỏChạy phương pháp thử nghiệm mà con trỏ của bạn tập trung vào trình chỉnh sửa. Tương tự với Python. Chạy phương pháp thử nghiệm. trên các phiên bản trước năm 2021. 9. Bài kiểm tra. Chạy thử nghiệm trong tệp hiện tạiChạy thử nghiệm trong tệp hiện đang tập trung vào trình chỉnh sửa. Tương đương với Python. Chạy tệp thử nghiệm hiện tại trên các phiên bản trước năm 2021. 9. Bài kiểm tra. Hiển thị đầu raMở đầu ra với thông tin chi tiết về tất cả các lần chạy thử. Tương tự với Python. Hiển thị Kết quả thử nghiệm trên các phiên bản trước năm 2021. 9. thử nghiệm. Tập trung vào Chế độ xem Test ExplorerMở chế độ xem Test Explorer. Tương tự với Thử nghiệm. Tập trung vào Chế độ xem Python trên các phiên bản trước năm 2021. 9. Bài kiểm tra. Dừng làm mới bài kiểm traHủy khám phá bài kiểm traCài đặt cấu hình thử nghiệmHành vi thử nghiệm với Python được điều khiển bởi các cài đặt giao diện người dùng chung do Mã VS cung cấp và các cài đặt dành riêng cho Python và cho bất kỳ khung nào bạn đã bật Cài đặt giao diện người dùng chungCác cài đặt ảnh hưởng đến giao diện người dùng của các tính năng thử nghiệm do chính Mã VS cung cấp và có thể tìm thấy trong trình chỉnh sửa Cài đặt mã VS khi bạn tìm kiếm "Thử nghiệm" Cài đặt Python chungCài đặt(trăn. thử nghiệm. )DefaultDescriptionautoTestDiscoverOnSaveEnabled 8Chỉ định bật hoặc tắt tự động chạy kiểm tra khám phá khi lưu tệp kiểm tra. Bạn có thể cần tải lại cửa sổ sau khi thay đổi cài đặt này để áp dụng. cwdnullChỉ định một thư mục làm việc tùy chọn cho các bài kiểm tra. debugPort 5Số cổng được sử dụng để gỡ lỗi các bài kiểm tra nhỏ nhất. promptToConfigure 8Chỉ định xem Mã VS có nhắc cấu hình khung thử nghiệm hay không nếu các thử nghiệm tiềm năng được phát hiệncài đặt cấu hình unittestCài đặt(trăn. thử nghiệm. )DefaultDescriptionunittestEnabled_______1_______9Chỉ định xem có bật unittest làm khung thử nghiệm hay không. Cài đặt tương đương cho pytest nên bị tắt. unittestArgs 8Các đối số để chuyển đến unittest, trong đó mỗi phần tử được phân tách bằng dấu cách là một mục riêng biệt trong danh sách. Xem bên dưới để biết mô tả về các giá trị mặc địnhCác đối số mặc định cho unittest như sau
Để dừng chạy thử ở lần lỗi đầu tiên, hãy thêm tùy chọn fail fast 6 vào mảng đối sốXem đầy đủ các tùy chọn có sẵn cài đặt cấu hình pytestCài đặt(trăn. thử nghiệm. )DefaultDescriptionpytestEnabled 9Chỉ định liệu pytest có được bật làm khung thử nghiệm hay không. Cài đặt tương đương cho unittest nên bị tắt. pytestPath 8Đường dẫn tới pytest. Sử dụng đường dẫn đầy đủ nếu pytest nằm ngoài môi trường hiện tại. pytestArgs 9Các đối số để chuyển đến pytest, trong đó mỗi phần tử được phân tách bằng dấu cách là một mục riêng biệt trong danh sách. ThấyBạn cũng có thể định cấu hình pytest bằng tệp 0 như được mô tả trên Cấu hình pytest
|