Bỏ qua trong python
Khung thử nghiệm đơn vị python -m unittest tests/test_something.py9 ban đầu được lấy cảm hứng từ JUnit và có hương vị tương tự như các khung thử nghiệm đơn vị chính trong các ngôn ngữ khác. Nó hỗ trợ tự động hóa thử nghiệm, chia sẻ mã thiết lập và tắt cho các thử nghiệm, tổng hợp các thử nghiệm thành các bộ sưu tập và tính độc lập của các thử nghiệm với khung báo cáo Show
Để đạt được điều này, python -m unittest tests/test_something.py9 hỗ trợ một số khái niệm quan trọng theo cách hướng đối tượnglịch thi đấu Một bộ cố định thử nghiệm thể hiện sự chuẩn bị cần thiết để thực hiện một hoặc nhiều thử nghiệm và bất kỳ hành động dọn dẹp nào có liên quan. Điều này có thể bao gồm, ví dụ, tạo cơ sở dữ liệu tạm thời hoặc proxy, thư mục hoặc khởi động quy trình máy chủ trường hợp thử nghiệmMột trường hợp thử nghiệm là đơn vị thử nghiệm riêng lẻ. Nó kiểm tra một phản hồi cụ thể đối với một bộ đầu vào cụ thể. python -m unittest tests/test_something.py9 cung cấp một lớp cơ sở, python -m unittest -v test_module3, có thể được sử dụng để tạo các trường hợp thử nghiệm mớibộ kiểm tra Bộ kiểm thử là tập hợp các trường hợp kiểm thử, bộ kiểm thử hoặc cả hai. Nó được sử dụng để tổng hợp các bài kiểm tra nên được thực hiện cùng nhau người chạy thửTrình chạy thử nghiệm là một thành phần điều phối việc thực hiện các thử nghiệm và cung cấp kết quả cho người dùng. Người chạy có thể sử dụng giao diện đồ họa, giao diện văn bản hoặc trả về một giá trị đặc biệt để chỉ ra kết quả thực hiện các bài kiểm tra Xem thêm Mô-đunpython -m unittest -v test_module4 Một mô-đun hỗ trợ thử nghiệm khác với hương vị rất khác Kiểm tra Smalltalk đơn giản. có hoa vănBài báo gốc của Kent Beck về các khung thử nghiệm sử dụng mẫu được chia sẻ bởi python -m unittest tests/test_something.py9người khó tính Khung đơn giản nhất của bên thứ ba với cú pháp nhẹ hơn để viết bài kiểm tra. Ví dụ, python -m unittest -v test_module6Phân loại công cụ kiểm tra Python Một danh sách đầy đủ các công cụ kiểm tra Python bao gồm các khung kiểm tra chức năng và thư viện đối tượng giả Thử nghiệm trong Danh sách gửi thư PythonMột nhóm có sở thích đặc biệt để thảo luận về thử nghiệm và các công cụ thử nghiệm trong Python Tập lệnh python -m unittest -v test_module7 trong bản phân phối nguồn Python là một công cụ GUI để khám phá và thực thi thử nghiệm. Điều này chủ yếu nhằm mục đích dễ sử dụng cho những người mới thử nghiệm đơn vị. Đối với môi trường sản xuất, các thử nghiệm nên được điều khiển bởi một hệ thống tích hợp liên tục như Buildbot, Jenkins, GitHub Actions hoặc AppVeyor Ví dụ cơ bản¶Mô-đun python -m unittest tests/test_something.py9 cung cấp một bộ công cụ phong phú để xây dựng và chạy thử nghiệm. Phần này chứng minh rằng một tập hợp con nhỏ của các công cụ đủ để đáp ứng nhu cầu của hầu hết người dùng Đây là một đoạn script ngắn để kiểm tra ba phương thức chuỗi import unittest class TestStringMethods(unittest.TestCase): def test_upper(self): self.assertEqual('foo'.upper(), 'FOO') def test_isupper(self): self.assertTrue('FOO'.isupper()) self.assertFalse('Foo'.isupper()) def test_split(self): s = 'hello world' self.assertEqual(s.split(), ['hello', 'world']) # check that s.split fails when the separator is not a string with self.assertRaises(TypeError): s.split(2) if __name__ == '__main__': unittest.main() Một testcase được tạo bởi phân lớp python -m unittest -v test_module9. Ba bài kiểm tra riêng lẻ được xác định bằng các phương thức có tên bắt đầu bằng các chữ cái python -m unittest tests/test_something.py10. Quy ước đặt tên này thông báo cho người chạy thử nghiệm về phương thức nào đại diện cho các thử nghiệm Mấu chốt của mỗi bài kiểm tra là một cuộc gọi tới python -m unittest tests/test_something.py11 để kiểm tra kết quả mong đợi; . Các phương pháp này được sử dụng thay cho câu lệnh python -m unittest tests/test_something.py15 để người chạy thử nghiệm có thể tích lũy tất cả các kết quả thử nghiệm và tạo báo cáo Các phương thức python -m unittest tests/test_something.py16 và python -m unittest tests/test_something.py17 cho phép bạn xác định các lệnh sẽ được thực thi trước và sau mỗi phương thức kiểm tra. Chúng được đề cập chi tiết hơn trong phần Tổ chức mã kiểm tra . Khối cuối cùng cho thấy một cách đơn giản để chạy thử nghiệm. python -m unittest tests/test_something.py18 cung cấp giao diện dòng lệnh cho tập lệnh thử nghiệm. Khi chạy từ dòng lệnh, tập lệnh trên sẽ tạo ra một đầu ra giống như thế này python -m unittest tests/test_something.py0 Chuyển tùy chọn python -m unittest tests/test_something.py19 cho tập lệnh thử nghiệm của bạn sẽ hướng dẫn python -m unittest tests/test_something.py18 kích hoạt mức độ chi tiết cao hơn và tạo ra kết quả sau python -m unittest tests/test_something.py3 Các ví dụ trên cho thấy các tính năng python -m unittest tests/test_something.py9 được sử dụng phổ biến nhất, đủ để đáp ứng nhiều nhu cầu kiểm tra hàng ngày. Phần còn lại của tài liệu khám phá bộ tính năng đầy đủ từ các nguyên tắc đầu tiên Đã thay đổi trong phiên bản 3. 11. Hành vi trả về một giá trị từ một phương pháp thử nghiệm (không phải giá trị mặc định python -m unittest tests/test_something.py52), hiện không được dùng nữa. Giao diện dòng lệnh¶Mô-đun unittest có thể được sử dụng từ dòng lệnh để chạy thử nghiệm từ các mô-đun, lớp hoặc thậm chí các phương thức thử nghiệm riêng lẻ python -m unittest tests/test_something.py6 Bạn có thể chuyển vào một danh sách với bất kỳ sự kết hợp nào của tên mô-đun và tên phương thức hoặc lớp đủ điều kiện Các mô-đun thử nghiệm cũng có thể được chỉ định theo đường dẫn tệp python -m unittest tests/test_something.py Điều này cho phép bạn sử dụng hoàn thành tên tệp shell để chỉ định mô-đun thử nghiệm. Tệp được chỉ định vẫn phải nhập được dưới dạng mô-đun. Đường dẫn được chuyển đổi thành tên mô-đun bằng cách xóa '. py' và chuyển đổi các dấu phân cách đường dẫn thành '. ’. Nếu bạn muốn thực thi tệp thử nghiệm không thể nhập dưới dạng mô-đun, thay vào đó, bạn nên thực thi tệp trực tiếp Bạn có thể chạy thử nghiệm với nhiều chi tiết hơn (độ chi tiết cao hơn) bằng cách chuyển vào cờ -v python -m unittest -v test_module Khi được thực thi mà không có đối số Thử nghiệm Khám phá được bắt đầu. python -m unittest tests/test_something.py1 Để biết danh sách tất cả các tùy chọn dòng lệnh python -m unittest tests/test_something.py5 Đã thay đổi trong phiên bản 3. 2. Trong các phiên bản trước, chỉ có thể chạy các phương thức thử nghiệm riêng lẻ chứ không phải mô-đun hoặc lớp. Tùy chọn dòng lệnh¶unittest hỗ trợ các tùy chọn dòng lệnh này -b, --bộ đệm ¶Đầu ra tiêu chuẩn và các luồng lỗi tiêu chuẩn được lưu vào bộ đệm trong quá trình chạy thử nghiệm. Đầu ra trong một bài kiểm tra vượt qua bị loại bỏ. Đầu ra được lặp lại bình thường khi kiểm tra lỗi hoặc lỗi và được thêm vào thông báo lỗi -c, --bắt ¶Control-C trong quá trình chạy thử, đợi thử nghiệm hiện tại kết thúc rồi báo cáo tất cả các kết quả cho đến nay. Control-C thứ hai tăng ngoại lệ python -m unittest tests/test_something.py53 bình thường Xem Xử lý tín hiệu để biết các chức năng cung cấp chức năng này -f, --không thành công ¶Dừng chạy thử khi có lỗi hoặc lỗi đầu tiên -k ¶Chỉ chạy thử nghiệm các phương thức và lớp phù hợp với mẫu hoặc chuỗi con. Tùy chọn này có thể được sử dụng nhiều lần, trong trường hợp đó, tất cả các trường hợp thử nghiệm khớp với bất kỳ mẫu nào đã cho đều được bao gồm Các mẫu có chứa ký tự đại diện ( python -m unittest tests/test_something.py54) được khớp với tên bài kiểm tra bằng cách sử dụng python -m unittest tests/test_something.py55; Các mẫu được so khớp với tên phương thức kiểm tra đủ điều kiện do trình tải kiểm tra nhập vào Ví dụ: python -m unittest tests/test_something.py56 khớp với python -m unittest tests/test_something.py57, python -m unittest tests/test_something.py58, nhưng không khớp với python -m unittest tests/test_something.py59--người dân địa phương ¶ Hiển thị các biến cục bộ trong truy nguyên Mới trong phiên bản 3. 2. Các tùy chọn dòng lệnh python -m unittest -v test_module80, python -m unittest -v test_module81 và python -m unittest -v test_module82 đã được thêm vào. Mới trong phiên bản 3. 5. Tùy chọn dòng lệnh python -m unittest -v test_module83. Mới trong phiên bản 3. 7. Tùy chọn dòng lệnh python -m unittest -v test_module84. Dòng lệnh cũng có thể được sử dụng để khám phá thử nghiệm, để chạy tất cả các thử nghiệm trong một dự án hoặc chỉ một tập hợp con Khám phá thử nghiệm¶Mới trong phiên bản 3. 2 Unittest hỗ trợ khám phá thử nghiệm đơn giản. Để tương thích với khám phá thử nghiệm, tất cả các tệp thử nghiệm phải là mô-đun hoặc gói importable from the top-level directory of the project (this means that their filenames must be valid identifiers). Khám phá thử nghiệm được triển khai trong python -m unittest -v test_module85, nhưng cũng có thể được sử dụng từ dòng lệnh. Việc sử dụng dòng lệnh cơ bản là python -m unittest -v test_module8 Ghi chú Là một phím tắt, python -m unittest -v test_module86 tương đương với python -m unittest -v test_module87. Nếu bạn muốn truyền đối số để kiểm tra khám phá, lệnh phụ python -m unittest -v test_module88 phải được sử dụng rõ ràng Lệnh phụ python -m unittest -v test_module88 có các tùy chọn sau-v, --dài dòng ¶ Báo cáo dài dòng -s, --thư mục bắt đầu thư mục¶Thư mục để bắt đầu khám phá ( python -m unittest -v test_module90 mặc định)-p, --mẫu mẫu ¶< Mẫu để khớp với các tệp thử nghiệm (mặc định ____491) -t, --thư mục cấp cao nhất thư mục¶Thư mục cấp cao nhất của dự án (mặc định là thư mục bắt đầu) Các tùy chọn python -m unittest -v test_module92, python -m unittest -v test_module93 và python -m unittest -v test_module94 có thể được chuyển vào dưới dạng đối số vị trí theo thứ tự đó. Hai dòng lệnh sau là tương đương python -m unittest -v test_module9 Cũng như là một đường dẫn, có thể chuyển tên gói, ví dụ python -m unittest -v test_module95, làm thư mục bắt đầu. Tên gói bạn cung cấp sau đó sẽ được nhập và vị trí của nó trên hệ thống tệp sẽ được sử dụng làm thư mục bắt đầu thận trọng Phát hiện thử nghiệm tải các bài kiểm tra bằng cách nhập chúng. Khi khám phá thử nghiệm đã tìm thấy tất cả các tệp thử nghiệm từ thư mục bắt đầu mà bạn chỉ định, nó sẽ biến các đường dẫn thành tên gói để nhập. Ví dụ: python -m unittest -v test_module96 sẽ được nhập dưới dạng python -m unittest -v test_module97 Nếu bạn đã cài đặt một gói trên toàn cầu và thử khám phá kiểm tra trên một bản sao khác của gói thì quá trình nhập có thể xảy ra từ sai vị trí. Nếu điều này xảy ra, kiểm tra khám phá sẽ cảnh báo bạn và thoát Nếu bạn cung cấp thư mục bắt đầu dưới dạng tên gói thay vì đường dẫn đến thư mục thì khám phá giả định rằng bất kỳ vị trí nào nó nhập từ đó đều là vị trí bạn dự định, vì vậy bạn sẽ không nhận được cảnh báo Các mô-đun và gói thử nghiệm có thể tùy chỉnh quá trình tải và phát hiện thử nghiệm thông qua giao thức load_tests Đã thay đổi trong phiên bản 3. 4. Phát hiện thử nghiệm hỗ trợ gói không gian tên cho thư mục bắt đầu. Lưu ý rằng bạn cũng cần chỉ định thư mục cấp cao nhất (e. g. python -m unittest -v test_module98). Đã thay đổi trong phiên bản 3. 11. Trăn 3. 11 bỏ hỗ trợ gói không gian tên . Nó đã bị hỏng kể từ Python 3. 7. Thư mục bắt đầu và thư mục con chứa các bài kiểm tra phải là gói thông thường có tệp python -m unittest -v test_module99. Các thư mục chứa thư mục bắt đầu vẫn có thể là một gói không gian tên. Trong trường hợp này, bạn cần chỉ định thư mục bắt đầu là tên gói chấm và thư mục đích một cách rõ ràng. Ví dụ python -m unittest tests/test_something.py00 Tổ chức mã kiểm tra¶Các khối xây dựng cơ bản của thử nghiệm đơn vị là các trường hợp thử nghiệm - các kịch bản đơn lẻ phải được thiết lập và kiểm tra tính chính xác. Trong python -m unittest tests/test_something.py9, các trường hợp thử nghiệm được đại diện bởi python -m unittest -v test_module9 trường hợp. Để tạo các trường hợp thử nghiệm của riêng bạn, bạn phải viết các lớp con của python -m unittest -v test_module3 hoặc sử dụng python -m unittest tests/test_something.py003 Mã thử nghiệm của phiên bản python -m unittest -v test_module3 phải hoàn toàn khép kín, sao cho mã có thể chạy độc lập hoặc kết hợp tùy ý với bất kỳ số lượng trường hợp thử nghiệm nào khác Lớp con python -m unittest -v test_module3 đơn giản nhất sẽ thực hiện một phương thức thử nghiệm (i. e. một phương thức có tên bắt đầu bằng python -m unittest tests/test_something.py10) để thực hiện mã kiểm tra cụ thể python -m unittest tests/test_something.py01 Lưu ý rằng để kiểm tra một cái gì đó, chúng tôi sử dụng một trong các phương pháp python -m unittest tests/test_something.py007 được cung cấp bởi lớp cơ sở python -m unittest -v test_module3. Nếu thử nghiệm thất bại, một ngoại lệ sẽ được đưa ra với thông báo giải thích và python -m unittest tests/test_something.py9 sẽ xác định trường hợp thử nghiệm là thất bại. Bất kỳ trường hợp ngoại lệ nào khác sẽ được coi là lỗi Các thử nghiệm có thể rất nhiều và thiết lập của chúng có thể lặp đi lặp lại. May mắn thay, chúng tôi có thể xác định mã thiết lập bằng cách triển khai một phương pháp có tên là python -m unittest tests/test_something.py16, mà khung thử nghiệm sẽ tự động gọi cho mọi thử nghiệm đơn lẻ mà chúng tôi chạy python -m unittest tests/test_something.py02 Ghi chú Thứ tự chạy các thử nghiệm khác nhau được xác định bằng cách sắp xếp tên phương thức thử nghiệm theo thứ tự tích hợp sẵn cho chuỗi Nếu phương thức python -m unittest tests/test_something.py16 đưa ra một ngoại lệ trong khi thử nghiệm đang chạy, khung sẽ coi thử nghiệm đó đã bị lỗi và phương thức thử nghiệm sẽ không được thực thi Tương tự, chúng ta có thể cung cấp một phương thức python -m unittest tests/test_something.py17 để dọn dẹp sau khi chạy phương thức thử nghiệm python -m unittest tests/test_something.py03 Nếu python -m unittest tests/test_something.py16 thành công, python -m unittest tests/test_something.py17 sẽ được chạy cho dù phương pháp thử nghiệm có thành công hay không Môi trường làm việc cho mã kiểm tra như vậy được gọi là vật cố kiểm tra. Một phiên bản TestCase mới được tạo dưới dạng một lịch thi thử duy nhất được sử dụng để thực thi từng phương thức thử nghiệm riêng lẻ. Do đó, python -m unittest tests/test_something.py16, python -m unittest tests/test_something.py17 và python -m unittest tests/test_something.py017 sẽ được gọi một lần cho mỗi bài kiểm tra Bạn nên sử dụng triển khai TestCase để nhóm các bài kiểm tra lại với nhau theo các tính năng mà chúng kiểm tra. python -m unittest tests/test_something.py9 cung cấp một cơ chế cho việc này. bộ thử nghiệm, được đại diện bởi lớp ________ 2020 của ________ 09. Trong hầu hết các trường hợp, gọi điện cho python -m unittest tests/test_something.py18 sẽ làm điều đúng đắn và thu thập tất cả các trường hợp thử nghiệm của mô-đun cho bạn và thực hiện chúng Tuy nhiên, nếu bạn muốn tùy chỉnh việc xây dựng bộ thử nghiệm của mình, bạn có thể tự làm điều đó python -m unittest tests/test_something.py04 Bạn có thể đặt các định nghĩa về trường hợp thử nghiệm và bộ thử nghiệm trong cùng mô-đun với mã mà chúng sẽ kiểm tra (chẳng hạn như python -m unittest tests/test_something.py022), nhưng có một số lợi thế khi đặt mã kiểm tra trong một mô-đun riêng biệt, chẳng hạn như python -m unittest tests/test_something.py023
Sử dụng lại mã kiểm tra cũ¶Một số người dùng sẽ thấy rằng họ có sẵn mã kiểm tra mà họ muốn chạy từ python -m unittest tests/test_something.py9 mà không cần chuyển đổi mọi chức năng kiểm tra cũ sang phân lớp python -m unittest -v test_module3 Vì lý do này, python -m unittest tests/test_something.py9 cung cấp một lớp python -m unittest tests/test_something.py003. Lớp con này của python -m unittest -v test_module3 có thể được sử dụng để bọc một chức năng kiểm tra hiện có. Chức năng thiết lập và phá bỏ cũng có thể được cung cấp Đưa ra chức năng kiểm tra sau python -m unittest tests/test_something.py05 người ta có thể tạo một trường hợp thử nghiệm tương đương như sau, với các phương pháp thiết lập và phá bỏ tùy chọn python -m unittest tests/test_something.py06 Ghi chú Mặc dù có thể sử dụng python -m unittest tests/test_something.py003 để nhanh chóng chuyển đổi cơ sở thử nghiệm hiện có sang hệ thống dựa trên python -m unittest tests/test_something.py9, phương pháp này không được khuyến nghị. Dành thời gian để thiết lập các lớp con python -m unittest -v test_module3 phù hợp sẽ giúp việc tái cấu trúc thử nghiệm trong tương lai dễ dàng hơn rất nhiều Trong một số trường hợp, các bài kiểm tra hiện có có thể đã được viết bằng mô-đun python -m unittest -v test_module4. Nếu vậy, python -m unittest -v test_module4 cung cấp một lớp python -m unittest tests/test_something.py034 có thể tự động xây dựng các phiên bản python -m unittest tests/test_something.py035 từ các thử nghiệm dựa trên python -m unittest -v test_module4 hiện có Bỏ qua các bài kiểm tra và thất bại dự kiến¶Mới trong phiên bản 3. 1 Unittest hỗ trợ bỏ qua các phương pháp kiểm tra riêng lẻ và thậm chí cả lớp kiểm tra. Ngoài ra, nó hỗ trợ đánh dấu một bài kiểm tra là "lỗi dự kiến", một bài kiểm tra bị hỏng và sẽ không đạt, nhưng không được tính là lỗi trên python -m unittest tests/test_something.py037 Bỏ qua một bài kiểm tra chỉ đơn giản là sử dụng công cụ trang trí python -m unittest tests/test_something.py038 decorator hoặc một trong các biến thể có điều kiện của nó, gọi python -m unittest tests/test_something.py039 trong một phương pháp kiểm tra hoặc python -m unittest tests/test_something.py16 . Bỏ qua cơ bản trông như thế này python -m unittest tests/test_something.py07 Đây là kết quả của việc chạy ví dụ trên ở chế độ dài dòng python -m unittest tests/test_something.py08 Các lớp có thể được bỏ qua giống như các phương thức python -m unittest tests/test_something.py09 python -m unittest tests/test_something.py042 cũng có thể bỏ qua bài kiểm tra. Điều này hữu ích khi không có tài nguyên cần thiết lập Lỗi dự kiến sử dụng trình trang trí python -m unittest tests/test_something.py043 python -m unittest tests/test_something.py30 Thật dễ dàng để cuộn các bộ trang trí bỏ qua của riêng bạn bằng cách tạo một bộ trang trí gọi python -m unittest tests/test_something.py038 trong bài kiểm tra khi nó muốn nó bị bỏ qua. Trình trang trí này bỏ qua bài kiểm tra trừ khi đối tượng được thông qua có một thuộc tính nhất định python -m unittest tests/test_something.py31 Các trình trang trí và ngoại lệ sau thực hiện bỏ qua kiểm tra và các lỗi dự kiến @đơn vị kiểm tra. bỏ qua(lý do) ¶Vô điều kiện bỏ qua bài kiểm tra trang trí. lý do nên mô tả lý do tại sao bài kiểm tra bị bỏ qua @đơn vị kiểm tra. skipIf(điều kiện , lý do)¶Bỏ qua bài kiểm tra trang trí nếu điều kiện là đúng @đơn vị kiểm tra. skipUnless(điều kiện , lý do)¶Bỏ qua bài kiểm tra trang trí trừ khi điều kiện là đúng @đơn vị kiểm tra. expectedFailure ¶Đánh dấu bài kiểm tra là lỗi hoặc lỗi dự kiến. Nếu thử nghiệm thất bại hoặc lỗi trong chính chức năng thử nghiệm (chứ không phải ở một trong các phương pháp cố định thử nghiệm) thì nó sẽ được coi là thành công. Nếu vượt qua bài kiểm tra, nó sẽ được coi là thất bại ngoại lệ đơn vị kiểm tra. SkipTest(lý do) ¶Ngoại lệ này được đưa ra để bỏ qua một bài kiểm tra Thông thường, bạn có thể sử dụng python -m unittest tests/test_something.py039 hoặc một trong các trình trang trí bỏ qua thay vì nâng trực tiếp điều này Các bài kiểm tra bị bỏ qua sẽ không có python -m unittest tests/test_something.py16 hoặc python -m unittest tests/test_something.py17 chạy xung quanh chúng. Các lớp học bị bỏ qua sẽ không chạy python -m unittest tests/test_something.py048 hoặc python -m unittest tests/test_something.py049. Các mô-đun bị bỏ qua sẽ không chạy được python -m unittest tests/test_something.py050 hoặc python -m unittest tests/test_something.py051 Phân biệt các lần lặp kiểm tra bằng cách sử dụng phép trừ¶Mới trong phiên bản 3. 4 Khi có sự khác biệt rất nhỏ giữa các thử nghiệm của bạn, chẳng hạn như một số tham số, unittest cho phép bạn phân biệt chúng bên trong phần thân của phương pháp thử nghiệm bằng cách sử dụng trình quản lý ngữ cảnh python -m unittest tests/test_something.py052 Ví dụ, bài kiểm tra sau python -m unittest tests/test_something.py32 sẽ tạo ra đầu ra sau python -m unittest tests/test_something.py33 Nếu không sử dụng phép thử phụ, quá trình thực thi sẽ dừng sau lỗi đầu tiên và lỗi sẽ khó chẩn đoán hơn vì giá trị của python -m unittest tests/test_something.py053 sẽ không được hiển thị python -m unittest tests/test_something.py34 Lớp và hàm¶Phần này mô tả sâu về API của python -m unittest tests/test_something.py9 Các ca kiểm thử¶lớp đơn vị kiểm tra. TestCase(tên phương thức=')¶Các thể hiện của lớp python -m unittest -v test_module3 đại diện cho các đơn vị kiểm tra logic trong vũ trụ python -m unittest tests/test_something.py9. Lớp này dự định sẽ được sử dụng làm lớp cơ sở, với các thử nghiệm cụ thể được thực hiện bởi các lớp con cụ thể. Lớp này triển khai giao diện cần thiết cho người chạy thử nghiệm để cho phép nó thực hiện các bài kiểm tra và các phương thức mà mã kiểm tra có thể sử dụng để kiểm tra và báo cáo các loại lỗi khác nhau Mỗi phiên bản của python -m unittest -v test_module3 sẽ chạy một phương thức cơ sở duy nhất. phương thức có tên methodName. Trong hầu hết các trường hợp sử dụng python -m unittest -v test_module3, bạn sẽ không thay đổi tên phương thức cũng như không triển khai lại phương thức mặc định của python -m unittest tests/test_something.py059 Đã thay đổi trong phiên bản 3. 2. ______33 có thể được khởi tạo thành công mà không cần cung cấp tên phương thức. Điều này giúp thử nghiệm với python -m unittest -v test_module3 từ trình thông dịch tương tác dễ dàng hơn. Phiên bản python -m unittest -v test_module3 cung cấp ba nhóm phương thức. một nhóm được sử dụng để chạy thử nghiệm, một nhóm khác được triển khai thử nghiệm sử dụng để kiểm tra các điều kiện và báo cáo lỗi và một số phương pháp điều tra cho phép thu thập thông tin về bản thân thử nghiệm Các phương thức trong nhóm đầu tiên (đang chạy thử nghiệm) là thiết lập() ¶Phương pháp được gọi để chuẩn bị vật cố định thử nghiệm. Điều này được gọi ngay trước khi gọi phương thức thử nghiệm; . Việc thực hiện mặc định không có gì xé xuống() ¶Phương thức được gọi ngay sau khi phương thức kiểm tra được gọi và kết quả được ghi lại. Điều này được gọi ngay cả khi phương thức kiểm tra đưa ra một ngoại lệ, vì vậy việc triển khai trong các lớp con có thể cần phải đặc biệt cẩn thận về việc kiểm tra trạng thái bên trong. Bất kỳ ngoại lệ nào, ngoại trừ python -m unittest tests/test_something.py063 hoặc python -m unittest tests/test_something.py041, được nêu ra theo phương pháp này sẽ được coi là lỗi bổ sung thay vì lỗi thử nghiệm (do đó làm tăng tổng số lỗi được báo cáo). Phương thức này sẽ chỉ được gọi nếu python -m unittest tests/test_something.py16 thành công, bất kể kết quả của phương thức thử nghiệm là gì. Việc thực hiện mặc định không có gìsetUpClass() ¶ Một phương thức lớp được gọi trước khi các bài kiểm tra trong một lớp riêng lẻ được chạy. python -m unittest tests/test_something.py068 được gọi với lớp là đối số duy nhất và phải được trang trí dưới dạng python -m unittest tests/test_something.py069 python -m unittest tests/test_something.py35 Xem Đồ đạc loại và mô-đun để biết thêm chi tiết Mới trong phiên bản 3. 2 tearDownClass() ¶Một phương thức lớp được gọi sau khi các bài kiểm tra trong một lớp riêng lẻ đã chạy. python -m unittest tests/test_something.py070 được gọi với lớp là đối số duy nhất và phải được trang trí dưới dạng python -m unittest tests/test_something.py069 python -m unittest tests/test_something.py36 Xem Đồ đạc loại và mô-đun để biết thêm chi tiết Mới trong phiên bản 3. 2 chạy(kết quả=Không có)¶Chạy thử nghiệm, thu thập kết quả vào đối tượng python -m unittest tests/test_something.py037 được truyền dưới dạng kết quả. Nếu kết quả bị bỏ qua hoặc python -m unittest tests/test_something.py52, một đối tượng kết quả tạm thời được tạo (bằng cách gọi phương thức python -m unittest tests/test_something.py074) và được sử dụng. Đối tượng kết quả được trả về người gọi của python -m unittest tests/test_something.py075 Có thể có tác dụng tương tự bằng cách đơn giản gọi thể hiện python -m unittest -v test_module3 Đã thay đổi trong phiên bản 3. 3. Các phiên bản trước của python -m unittest tests/test_something.py077 không trả về kết quả. Không gọi một ví dụ. skipTest(lý do) ¶ Gọi điều này trong một phương pháp thử nghiệm hoặc python -m unittest tests/test_something.py16 bỏ qua thử nghiệm hiện tại. Xem Bỏ qua kiểm tra và lỗi dự kiến để biết thêm thông tin. Mới trong phiên bản 3. 1 subTest(tin nhắn=Không có, **params)¶Trả về trình quản lý bối cảnh thực thi khối mã kèm theo dưới dạng phép thử phụ. msg và params là các giá trị tùy ý, tùy chọn được hiển thị bất cứ khi nào một phép thử phụ không thành công, cho phép bạn xác định chúng một cách rõ ràng Một trường hợp kiểm tra có thể chứa bất kỳ số lượng khai báo kiểm tra con nào và chúng có thể được lồng vào nhau tùy ý Xem Phân biệt các phép thử lặp lại bằng phép thử con để biết thêm thông tin. Mới trong phiên bản 3. 4 gỡ lỗi() ¶Chạy thử nghiệm mà không thu thập kết quả. Điều này cho phép các ngoại lệ do thử nghiệm đưa ra được truyền tới người gọi và có thể được sử dụng để hỗ trợ chạy thử nghiệm trong trình gỡ lỗi Lớp python -m unittest -v test_module3 cung cấp một số phương thức xác nhận để kiểm tra và báo cáo lỗi. Bảng sau liệt kê các phương pháp được sử dụng phổ biến nhất (xem các bảng bên dưới để biết thêm các phương pháp xác nhận) Phương pháp Kiểm tra xem Mới python -m unittest tests/test_something.py080 python -m unittest tests/test_something.py081 python -m unittest tests/test_something.py082 python -m unittest tests/test_something.py083 python -m unittest tests/test_something.py084 python -m unittest tests/test_something.py085 python -m unittest tests/test_something.py086 python -m unittest tests/test_something.py087 python -m unittest tests/test_something.py088 python -m unittest tests/test_something.py089 3. 1 python -m unittest tests/test_something.py090 python -m unittest tests/test_something.py091 3. 1 python -m unittest tests/test_something.py092 python -m unittest tests/test_something.py093 3. 1 python -m unittest tests/test_something.py094 python -m unittest tests/test_something.py095 3. 1 python -m unittest tests/test_something.py096 python -m unittest tests/test_something.py097 3. 1 python -m unittest tests/test_something.py098 python -m unittest tests/test_something.py099 3. 1 python -m unittest tests/test_something.py300 python -m unittest tests/test_something.py301 3. 2 python -m unittest tests/test_something.py302 python -m unittest tests/test_something.py303 3. 2 Tất cả các phương thức xác nhận đều chấp nhận một đối số msg, nếu được chỉ định, được sử dụng làm thông báo lỗi khi thất bại (xem thêm python -m unittest tests/test_something.py304). Lưu ý rằng đối số từ khóa msg chỉ có thể được chuyển đến python -m unittest tests/test_something.py14, python -m unittest tests/test_something.py306, python -m unittest tests/test_something.py307, python -m unittest tests/test_something.py308 khi chúng được sử dụng làm trình quản lý ngữ cảnhassertEqual(đầu tiên , thứ hai, msg=None)¶ Kiểm tra xem thứ nhất và thứ hai có bằng nhau không. Nếu các giá trị không so sánh bằng nhau, thử nghiệm sẽ thất bại Ngoài ra, nếu thứ nhất và thứ hai là cùng một loại chính xác và là một trong danh sách, tuple, dict, set, freezeset hoặc str hoặc bất kỳ loại nào mà lớp con đăng ký với Đã thay đổi trong phiên bản 3. 1. Đã thêm tính năng tự động gọi hàm đẳng thức theo loại cụ thể. Đã thay đổi trong phiên bản 3. 2. ______2310 được thêm làm hàm đẳng thức kiểu mặc định để so sánh các chuỗi. assertNotEqual(đầu tiên , thứ hai, msg=None)¶Kiểm tra thứ nhất và thứ hai không bằng nhau. Nếu các giá trị so sánh bằng nhau, thử nghiệm sẽ thất bại assertTrue(expr , tin nhắn=None)¶assertFalse(expr, msg=None)¶Kiểm tra xem expr có đúng (hoặc sai) Lưu ý rằng điều này tương đương với python -m unittest tests/test_something.py311 chứ không phải với python -m unittest tests/test_something.py312 (sử dụng python -m unittest tests/test_something.py313 cho trường hợp sau). Phương pháp này cũng nên tránh khi có sẵn các phương pháp cụ thể hơn (e. g. python -m unittest tests/test_something.py080 thay vì python -m unittest tests/test_something.py315), vì chúng cung cấp thông báo lỗi tốt hơn trong trường hợp không thành côngassertIs(đầu tiên , thứ hai, msg=None)¶assertIsNot(first, second, msg=None)¶ Kiểm tra xem thứ nhất và thứ hai có phải (hoặc không) cùng một đối tượng không Mới trong phiên bản 3. 1 assertIsNone(expr , tin nhắn=None)¶assertIsNotNone(expr, msg=None)¶Kiểm tra expr đó là (hoặc không) python -m unittest tests/test_something.py52 Mới trong phiên bản 3. 1 assertIn(thành viên , vùng chứa, msg=None)¶assertNotIn(member, container, msg=None)¶Kiểm tra thành viên đó có (hoặc không) trong vùng chứa Mới trong phiên bản 3. 1 assertIsInstance(obj , cls, msg=None)¶assertNotIsInstance(obj, cls, msg=None)¶Kiểm tra xem obj có phải (hoặc không) là một thể hiện của cls (có thể là một lớp hoặc một bộ lớp, được hỗ trợ bởi python -m unittest tests/test_something.py317). Để kiểm tra loại chính xác, hãy sử dụng python -m unittest tests/test_something.py318 Mới trong phiên bản 3. 2 Cũng có thể kiểm tra việc tạo ra các ngoại lệ, cảnh báo và thông báo nhật ký bằng các phương pháp sau Phương pháp Kiểm tra xem Mới python -m unittest tests/test_something.py319 python -m unittest tests/test_something.py320 tăng ex python -m unittest tests/test_something.py321 python -m unittest tests/test_something.py320 tăng exc và thông báo khớp với regex r 3. 1 python -m unittest tests/test_something.py323 python -m unittest tests/test_something.py320 tăng cảnh báo 3. 2 python -m unittest tests/test_something.py325 python -m unittest tests/test_something.py320 tăng cảnh báo và thông báo khớp với regex r 3. 2 python -m unittest tests/test_something.py327 Khối python -m unittest tests/test_something.py328 ghi nhật ký trên logger với mức tối thiểu 3. 4 python -m unittest tests/test_something.py329Khối python -m unittest tests/test_something.py328 không đăng nhập logger với mức tối thiểu 3. 10 assertRaises(ngoại lệ , có thể gọi, *args, **kwds)¶assertRaises(exception, *, msg=None)Kiểm tra xem có ngoại lệ nào xảy ra khi có thể gọi được với bất kỳ đối số vị trí hoặc từ khóa nào cũng được chuyển đến python -m unittest tests/test_something.py14. Thử nghiệm vượt qua nếu ngoại lệ được đưa ra, là lỗi nếu một ngoại lệ khác được đưa ra hoặc không thành công nếu không có ngoại lệ nào được đưa ra. Để bắt bất kỳ nhóm ngoại lệ nào, một bộ chứa các lớp ngoại lệ có thể được chuyển thành ngoại lệ Nếu chỉ có ngoại lệ và có thể đối số msg được cung cấp, hãy trả về trình quản lý ngữ cảnh để mã được kiểm tra có thể được viết nội tuyến thay vì dưới dạng hàm python -m unittest tests/test_something.py37 Khi được sử dụng làm trình quản lý ngữ cảnh, python -m unittest tests/test_something.py14 chấp nhận thông báo đối số từ khóa bổ sung Trình quản lý bối cảnh sẽ lưu trữ đối tượng ngoại lệ đã bắt trong thuộc tính python -m unittest tests/test_something.py333 của nó. Điều này có thể hữu ích nếu mục đích là thực hiện kiểm tra bổ sung đối với ngoại lệ được đưa ra python -m unittest tests/test_something.py38 Đã thay đổi trong phiên bản 3. 1. Đã thêm khả năng sử dụng python -m unittest tests/test_something.py14 làm trình quản lý ngữ cảnh. Đã thay đổi trong phiên bản 3. 2. Đã thêm thuộc tính python -m unittest tests/test_something.py333. Đã thay đổi trong phiên bản 3. 3. Đã thêm đối số từ khóa msg khi được sử dụng làm trình quản lý ngữ cảnh. assertRaisesRegex(ngoại lệ , regex, callable, *args, **kwds)¶assertRaisesRegex(exception, regex, *, msg=None)Giống như python -m unittest tests/test_something.py14 nhưng cũng kiểm tra xem regex khớp với biểu diễn chuỗi của ngoại lệ đã nêu. regex có thể là một đối tượng biểu thức chính quy hoặc một chuỗi chứa biểu thức chính quy phù hợp để sử dụng bởi python -m unittest tests/test_something.py337. ví dụ python -m unittest tests/test_something.py39 hoặc python -m unittest tests/test_something.py60 Mới trong phiên bản 3. 1. Đã thêm dưới tên python -m unittest tests/test_something.py338. Đã thay đổi trong phiên bản 3. 2. Đổi tên thành python -m unittest tests/test_something.py306. Đã thay đổi trong phiên bản 3. 3. Đã thêm đối số từ khóa msg khi được sử dụng làm trình quản lý ngữ cảnh. assertWarns(cảnh báo , có thể gọi, *args, **kwds)¶assertWarns(warning, *, msg=None)Kiểm tra xem cảnh báo có được kích hoạt khi có thể gọi được gọi với bất kỳ đối số vị trí hoặc từ khóa nào cũng được chuyển đến python -m unittest tests/test_something.py307. Kiểm tra vượt qua nếu cảnh báo được kích hoạt và không thành công nếu không. Bất kỳ ngoại lệ là một lỗi. Để nắm bắt bất kỳ nhóm cảnh báo nào, một bộ chứa các lớp cảnh báo có thể được chuyển dưới dạng cảnh báo Nếu chỉ đưa ra cảnh báo và có thể là đối số thông báo, hãy trả về trình quản lý ngữ cảnh để mã được kiểm tra có thể được viết nội tuyến thay vì dưới dạng hàm python -m unittest tests/test_something.py61 Khi được sử dụng làm trình quản lý ngữ cảnh, python -m unittest tests/test_something.py307 chấp nhận thông báo đối số từ khóa bổ sung Trình quản lý bối cảnh sẽ lưu trữ đối tượng cảnh báo bị bắt trong thuộc tính python -m unittest tests/test_something.py342 của nó và dòng nguồn đã kích hoạt cảnh báo trong thuộc tính python -m unittest tests/test_something.py343 và python -m unittest tests/test_something.py344. Điều này có thể hữu ích nếu mục đích là thực hiện kiểm tra bổ sung đối với cảnh báo bị bắt python -m unittest tests/test_something.py62 Phương pháp này hoạt động bất kể các bộ lọc cảnh báo tại chỗ khi nó được gọi Mới trong phiên bản 3. 2 Đã thay đổi trong phiên bản 3. 3. Đã thêm đối số từ khóa msg khi được sử dụng làm trình quản lý ngữ cảnh. assertWarnsRegex(cảnh báo , regex, callable, *args, **kwds)¶assertWarnsRegex(warning, regex, *, msg=None)Giống như python -m unittest tests/test_something.py307 nhưng cũng kiểm tra xem biểu thức chính quy nào khớp với thông báo của cảnh báo được kích hoạt. regex có thể là một đối tượng biểu thức chính quy hoặc một chuỗi chứa biểu thức chính quy phù hợp để sử dụng bởi python -m unittest tests/test_something.py337. Ví dụ python -m unittest tests/test_something.py63 hoặc python -m unittest tests/test_something.py64 Mới trong phiên bản 3. 2 Đã thay đổi trong phiên bản 3. 3. Đã thêm đối số từ khóa msg khi được sử dụng làm trình quản lý ngữ cảnh. assertLogs(logger=Không có, level=None)¶Trình quản lý ngữ cảnh để kiểm tra xem có ít nhất một thông báo được ghi vào bộ ghi hoặc một trong các phần tử con của nó không, với ít nhất một mức nhất định Nếu được cung cấp, bộ ghi phải là một đối tượng python -m unittest tests/test_something.py347 hoặc một python -m unittest tests/test_something.py348 đưa ra tên của bộ ghi. Mặc định là trình ghi nhật ký gốc, trình ghi nhật ký này sẽ bắt tất cả các thư không bị chặn bởi trình ghi nhật ký con cháu không lan truyền Nếu được cung cấp, cấp phải là cấp ghi số hoặc chuỗi tương đương (ví dụ: python -m unittest tests/test_something.py349 hoặc python -m unittest tests/test_something.py350). Mặc định là python -m unittest tests/test_something.py351 Thử nghiệm vượt qua nếu ít nhất một thông báo được phát ra bên trong khối python -m unittest tests/test_something.py328 phù hợp với điều kiện cấp độ và trình ghi nhật ký, nếu không thì không thành công Đối tượng được trả về bởi trình quản lý bối cảnh là một trình trợ giúp ghi âm giúp theo dõi các thông điệp nhật ký phù hợp. Nó có hai thuộc tính bản ghi ¶Danh sách các đối tượng python -m unittest tests/test_something.py353 của các thông điệp nhật ký phù hợpđầu ra ¶ A list of python -m unittest tests/test_something.py348 objects with the formatted output of matching messages Ví dụ python -m unittest tests/test_something.py65 Mới trong phiên bản 3. 4 assertNoLogs(logger=Không có, level=None)¶Trình quản lý ngữ cảnh để kiểm tra xem không có thông báo nào được ghi vào trình ghi nhật ký hoặc một trong các phần tử con của nó, với ít nhất một mức nhất định If given, logger should be a python -m unittest tests/test_something.py347 object or a python -m unittest tests/test_something.py348 giving the name of a logger. Mặc định là root logger, sẽ bắt tất cả các tin nhắn Nếu được cung cấp, cấp phải là cấp ghi số hoặc chuỗi tương đương (ví dụ: python -m unittest tests/test_something.py349 hoặc python -m unittest tests/test_something.py350). Mặc định là python -m unittest tests/test_something.py351 Không giống như python -m unittest tests/test_something.py360, trình quản lý bối cảnh sẽ không trả lại gì Mới trong phiên bản 3. 10 Ngoài ra còn có các phương pháp khác được sử dụng để thực hiện kiểm tra cụ thể hơn, chẳng hạn như Phương pháp Kiểm tra xem Mới python -m unittest tests/test_something.py361 python -m unittest tests/test_something.py362 python -m unittest tests/test_something.py363 python -m unittest tests/test_something.py364 python -m unittest tests/test_something.py365 python -m unittest tests/test_something.py366 3. 1 python -m unittest tests/test_something.py367 python -m unittest tests/test_something.py368 3. 1 python -m unittest tests/test_something.py369 python -m unittest tests/test_something.py370 3. 1 python -m unittest tests/test_something.py371 python -m unittest tests/test_something.py372 3. 1 python -m unittest tests/test_something.py373 python -m unittest tests/test_something.py374 3. 1 python -m unittest tests/test_something.py375 python -m unittest tests/test_something.py376 3. 2 python -m unittest tests/test_something.py377 a và b có cùng phần tử trong cùng một số, bất kể thứ tự của chúng 3. 2 assertAlmostEqual(đầu tiên , thứ hai, places=7, msg=None, delta=None)¶assertNotAlmostEqual(first, second, places=7, msg=None, delta=None)¶Kiểm tra xem thứ nhất và thứ hai có xấp xỉ (hoặc không xấp xỉ) bằng nhau bằng cách tính chênh lệch, làm tròn đến số vị trí thập phân đã cho (mặc định là 7) và so sánh với 0. Lưu ý rằng các phương pháp này làm tròn các giá trị đến số vị trí thập phân đã cho (i. e. như hàm python -m unittest tests/test_something.py378) và các chữ số không có nghĩa Nếu delta được cung cấp thay vì vị trí thì chênh lệch giữa thứ nhất và thứ hai phải nhỏ hơn hoặc bằng (hoặc lớn hơn) delta Cung cấp cả đồng bằng và địa điểm tăng python -m unittest tests/test_something.py379 Đã thay đổi trong phiên bản 3. 2. ______2380 tự động coi các đối tượng gần như bằng nhau để so sánh bằng nhau. python -m unittest tests/test_something.py381 tự động thất bại nếu các đối tượng so sánh bằng nhau. Đã thêm đối số từ khóa delta. assertGreater(thứ nhất , thứ hai, msg=None)¶assertGreaterEqual(first, second, msg=None)¶assertLess(first, second, msg=None)¶assertLessEqual(first, second, msg=None)¶ Kiểm tra cái đầu tiên tương ứng là >, >=, < hoặc <= so với thứ hai tùy thuộc vào tên phương thức. Nếu không, bài kiểm tra sẽ thất bại python -m unittest tests/test_something.py66 Mới trong phiên bản 3. 1 assertRegex(văn bản , regex, msg=None)¶assertNotRegex(text, regex, msg=None)¶Kiểm tra xem tìm kiếm regex khớp (hoặc không khớp) văn bản. Trong trường hợp không thành công, thông báo lỗi sẽ bao gồm mẫu và văn bản (hoặc mẫu và phần văn bản khớp không mong muốn). regex có thể là một đối tượng biểu thức chính quy hoặc một chuỗi chứa biểu thức chính quy phù hợp để sử dụng bởi python -m unittest tests/test_something.py337 Mới trong phiên bản 3. 1. Đã thêm dưới tên python -m unittest tests/test_something.py383. Đã thay đổi trong phiên bản 3. 2. Phương thức python -m unittest tests/test_something.py384 đã được đổi tên thành python -m unittest tests/test_something.py385. Mới trong phiên bản 3. 2. ______2386. Mới trong phiên bản 3. 5. Tên python -m unittest tests/test_something.py387 là bí danh không dùng nữa cho python -m unittest tests/test_something.py386. assertCountEqual(đầu tiên , thứ hai, msg=None)¶ Kiểm tra trình tự đầu tiên chứa các phần tử giống như thứ hai, bất kể thứ tự của chúng. Khi không, một thông báo lỗi liệt kê sự khác biệt giữa các trình tự sẽ được tạo Các yếu tố trùng lặp không bị bỏ qua khi so sánh thứ nhất và thứ hai. Nó xác minh xem mỗi phần tử có cùng số đếm trong cả hai chuỗi hay không. Tương đương với. python -m unittest tests/test_something.py389 nhưng cũng hoạt động với các chuỗi đối tượng không thể băm Mới trong phiên bản 3. 2 The python -m unittest tests/test_something.py11 method dispatches the equality check for objects of the same type to different type-specific methods. Các phương thức này đã được triển khai cho hầu hết các loại tích hợp sẵn, nhưng cũng có thể đăng ký các phương thức mới bằng cách sử dụng python -m unittest tests/test_something.py309addTypeEqualityFunc(typeobj , function)¶ Đăng ký một phương thức dành riêng cho loại được gọi bởi python -m unittest tests/test_something.py11 để kiểm tra xem hai đối tượng có cùng loạiobj (không phải phân lớp) có so sánh bằng nhau không. hàm phải nhận hai đối số vị trí và đối số từ khóa msg=None thứ ba giống như python -m unittest tests/test_something.py11 thực hiện. Nó phải tăng python -m unittest tests/test_something.py394 khi phát hiện thấy sự bất bình đẳng giữa hai tham số đầu tiên – có thể cung cấp thông tin hữu ích và giải thích chi tiết về sự bất bình đẳng trong thông báo lỗi Mới trong phiên bản 3. 1 Danh sách các phương thức cụ thể theo loại được python -m unittest tests/test_something.py11 tự động sử dụng được tóm tắt trong bảng sau. Lưu ý rằng thường không cần thiết phải gọi trực tiếp các phương thức này Phương pháp Dùng để so sánh Mới python -m unittest tests/test_something.py396 dây 3. 1 python -m unittest tests/test_something.py397 trình tự 3. 1 python -m unittest tests/test_something.py398 danh sách 3. 1 python -m unittest tests/test_something.py399 bộ dữ liệu 3. 1 python -m unittest tests/test_something.py600 bộ hoặc bộ đông lạnh 3. 1 python -m unittest tests/test_something.py601 mệnh lệnh 3. 1 assertMultiLineEqual(đầu tiên , thứ hai, msg=None)¶Kiểm tra xem chuỗi nhiều dòng đầu tiên có bằng chuỗi thứ hai không. Khi không bằng một khác biệt của hai chuỗi làm nổi bật sự khác biệt sẽ được đưa vào thông báo lỗi. Phương pháp này được sử dụng theo mặc định khi so sánh các chuỗi với python -m unittest tests/test_something.py11 Mới trong phiên bản 3. 1 assertSequenceEqual(đầu tiên , thứ hai, msg=None, seq_type=None)¶Tests that two sequences are equal. Nếu một seq_type được cung cấp, thì cả thứ nhất và thứ hai phải là phiên bản của seq_type nếu không sẽ xảy ra lỗi. Nếu các trình tự khác nhau, một thông báo lỗi sẽ được tạo để hiển thị sự khác biệt giữa hai trình tự Phương thức này không được gọi trực tiếp bởi python -m unittest tests/test_something.py11, nhưng nó được sử dụng để triển khai python -m unittest tests/test_something.py604 và python -m unittest tests/test_something.py605 Mới trong phiên bản 3. 1 assertListEqual(đầu tiên , thứ hai, msg=None)¶assertTupleEqual(first, second, msg=None)¶Kiểm tra xem hai danh sách hoặc bộ dữ liệu có bằng nhau không. Nếu không, một thông báo lỗi được tạo chỉ hiển thị sự khác biệt giữa hai. Một lỗi cũng được đưa ra nếu một trong các tham số không đúng loại. These methods are used by default when comparing lists or tuples with python -m unittest tests/test_something.py11 Mới trong phiên bản 3. 1 assertSetEqual(đầu tiên , thứ hai, msg=None)¶Kiểm tra xem hai tập hợp có bằng nhau không. Nếu không, một thông báo lỗi được tạo liệt kê sự khác biệt giữa các bộ. Phương pháp này được sử dụng theo mặc định khi so sánh các bộ hoặc bộ đóng băng với python -m unittest tests/test_something.py11 Thất bại nếu một trong hai thứ nhất hoặc thứ hai không có phương thức python -m unittest tests/test_something.py608 Mới trong phiên bản 3. 1 assertDictEqual(đầu tiên , thứ hai, msg=None)¶Kiểm tra xem hai từ điển có bằng nhau không. Nếu không, một thông báo lỗi được tạo cho thấy sự khác biệt trong từ điển. Phương pháp này sẽ được sử dụng theo mặc định để so sánh từ điển trong các cuộc gọi tới python -m unittest tests/test_something.py11 Mới trong phiên bản 3. 1 Cuối cùng, python -m unittest -v test_module3 cung cấp các phương thức và thuộc tính saukhông thành công(tin nhắn=Không có)¶ Báo hiệu lỗi kiểm tra một cách vô điều kiện, với msg hoặc python -m unittest tests/test_something.py52 cho thông báo lỗifailureException ¶ Thuộc tính lớp này đưa ra ngoại lệ được đưa ra bởi phương thức kiểm tra. Nếu một khung kiểm tra cần sử dụng một ngoại lệ chuyên biệt, có thể mang thông tin bổ sung, thì nó phải phân lớp ngoại lệ này để “chơi công bằng” với khung. Giá trị ban đầu của thuộc tính này là python -m unittest tests/test_something.py063longMessage ¶ Thuộc tính lớp này xác định điều gì sẽ xảy ra khi thông báo lỗi tùy chỉnh được chuyển dưới dạng đối số msg cho lệnh gọi assertXYY không thành công. python -m unittest tests/test_something.py613 là giá trị mặc định. Trong trường hợp này, thông báo tùy chỉnh được thêm vào cuối thông báo lỗi tiêu chuẩn. Khi được đặt thành python -m unittest tests/test_something.py614, thông báo tùy chỉnh sẽ thay thế thông báo tiêu chuẩn Cài đặt lớp có thể được ghi đè trong các phương thức thử nghiệm riêng lẻ bằng cách gán một thuộc tính thể hiện, tự. longMessage, to python -m unittest tests/test_something.py613 or python -m unittest tests/test_something.py614 before calling the assert methods Cài đặt lớp được đặt lại trước mỗi cuộc gọi thử nghiệm Mới trong phiên bản 3. 1 maxDiff ¶Thuộc tính này kiểm soát độ dài tối đa của đầu ra khác biệt bằng cách xác nhận các phương thức báo cáo khác biệt khi thất bại. Nó mặc định là 80*8 ký tự. Các phương thức xác nhận bị ảnh hưởng bởi thuộc tính này là python -m unittest tests/test_something.py617 (bao gồm tất cả các phương thức so sánh trình tự ủy quyền cho nó), python -m unittest tests/test_something.py618 và python -m unittest tests/test_something.py310 Đặt python -m unittest tests/test_something.py620 thành python -m unittest tests/test_something.py52 có nghĩa là không có độ dài khác biệt tối đa Mới trong phiên bản 3. 2 Khung kiểm tra có thể sử dụng các phương pháp sau để thu thập thông tin về bài kiểm tra countTestCases() ¶Trả về số lượng bài kiểm tra được đại diện bởi đối tượng kiểm tra này. Đối với các trường hợp python -m unittest -v test_module3, giá trị này sẽ luôn là python -m unittest tests/test_something.py623defaultTestResult() ¶ Trả về một thể hiện của lớp kết quả thử nghiệm sẽ được sử dụng cho lớp trường hợp thử nghiệm này (nếu không có thể hiện kết quả nào khác được cung cấp cho phương thức python -m unittest tests/test_something.py075) Đối với phiên bản python -m unittest -v test_module3, đây sẽ luôn là phiên bản của python -m unittest tests/test_something.py037; id() ¶ Trả về một chuỗi xác định trường hợp thử nghiệm cụ thể. Đây thường là tên đầy đủ của phương thức thử nghiệm, bao gồm tên mô-đun và tên lớp Mô tả ngắn() ¶Trả về mô tả của bài kiểm tra hoặc python -m unittest tests/test_something.py52 nếu không có mô tả nào được cung cấp. Việc triển khai mặc định của phương thức này trả về dòng đầu tiên trong chuỗi tài liệu của phương thức thử nghiệm, nếu có hoặc python -m unittest tests/test_something.py52 Đã thay đổi trong phiên bản 3. 1. Sau 3. 1 điều này đã được thay đổi để thêm tên thử nghiệm vào mô tả ngắn ngay cả khi có chuỗi tài liệu. Điều này gây ra sự cố tương thích với các tiện ích mở rộng không đáng tin cậy nhất và việc thêm tên thử nghiệm đã được chuyển sang python -m unittest tests/test_something.py630 trong Python 3. 2. addCleanup(chức năng , /, *args, **kwargs)¶ Thêm một chức năng được gọi sau python -m unittest tests/test_something.py17 để dọn sạch tài nguyên được sử dụng trong quá trình kiểm tra. Các chức năng sẽ được gọi theo thứ tự ngược lại với thứ tự chúng được thêm vào (LIFO). Chúng được gọi với bất kỳ đối số và đối số từ khóa nào được chuyển vào python -m unittest tests/test_something.py632 khi chúng được thêm vào Nếu python -m unittest tests/test_something.py16 không thành công, nghĩa là python -m unittest tests/test_something.py17 không được gọi, thì mọi chức năng dọn dẹp được thêm vào sẽ vẫn được gọi Mới trong phiên bản 3. 1 enterContext(cm) ¶Nhập trình quản lý ngữ cảnh được cung cấp. Nếu thành công, hãy thêm phương thức python -m unittest tests/test_something.py635 của nó làm hàm dọn dẹp trước python -m unittest tests/test_something.py632 và trả về kết quả của phương thức python -m unittest tests/test_something.py637. Mới trong phiên bản 3. 11 doCleanups() ¶Phương thức này được gọi vô điều kiện sau python -m unittest tests/test_something.py17 hoặc sau python -m unittest tests/test_something.py16 nếu python -m unittest tests/test_something.py16 đưa ra một ngoại lệ Nó chịu trách nhiệm gọi tất cả các chức năng dọn dẹp được thêm bởi python -m unittest tests/test_something.py632. Nếu bạn cần các chức năng dọn dẹp được gọi trước python -m unittest tests/test_something.py17 thì bạn có thể tự gọi python -m unittest tests/test_something.py643 python -m unittest tests/test_something.py643 bật từng phương thức ra khỏi ngăn xếp của các hàm dọn dẹp, vì vậy nó có thể được gọi bất cứ lúc nào Mới trong phiên bản 3. 1 classmethod addClassCleanup(hàm , /, *args, **kwargs)¶Thêm một chức năng được gọi sau python -m unittest tests/test_something.py049 để dọn sạch các tài nguyên được sử dụng trong lớp kiểm tra. Các chức năng sẽ được gọi theo thứ tự ngược lại với thứ tự chúng được thêm vào (LIFO). Chúng được gọi với bất kỳ đối số và đối số từ khóa nào được chuyển vào python -m unittest tests/test_something.py646 khi chúng được thêm vào Nếu python -m unittest tests/test_something.py048 không thành công, nghĩa là python -m unittest tests/test_something.py049 không được gọi, thì mọi chức năng dọn dẹp được thêm vào sẽ vẫn được gọi Mới trong phiên bản 3. 8 classmethod enterClassContext(cm)¶Nhập trình quản lý ngữ cảnh được cung cấp. Nếu thành công, hãy thêm phương thức python -m unittest tests/test_something.py635 của nó dưới dạng hàm dọn dẹp trước python -m unittest tests/test_something.py646 và trả về kết quả của phương thức python -m unittest tests/test_something.py637. Mới trong phiên bản 3. 11 classmethod doClassCleanups() ¶This method is called unconditionally after python -m unittest tests/test_something.py049, or after python -m unittest tests/test_something.py048 if python -m unittest tests/test_something.py048 raises an exception It is responsible for calling all the cleanup functions added by python -m unittest tests/test_something.py646. If you need cleanup functions to be called prior to python -m unittest tests/test_something.py049 then you can call python -m unittest tests/test_something.py657 yourself python -m unittest tests/test_something.py657 pops methods off the stack of cleanup functions one at a time, so it can be called at any time Mới trong phiên bản 3. 8 class unittest. IsolatedAsyncioTestCase(methodName='runTest') ¶This class provides an API similar to python -m unittest -v test_module3 and also accepts coroutines as test functions Mới trong phiên bản 3. 8 coroutine asyncSetUp() ¶Phương pháp được gọi để chuẩn bị vật cố định thử nghiệm. Cái này được gọi sau python -m unittest tests/test_something.py16. Điều này được gọi ngay trước khi gọi phương thức thử nghiệm; . Việc thực hiện mặc định không có gìcoroutine asyncTearDown() ¶ Phương thức được gọi ngay sau khi phương thức kiểm tra được gọi và kết quả được ghi lại. Cái này được gọi trước python -m unittest tests/test_something.py17. Điều này được gọi ngay cả khi phương thức kiểm tra đưa ra một ngoại lệ, vì vậy việc triển khai trong các lớp con có thể cần phải đặc biệt cẩn thận về việc kiểm tra trạng thái bên trong. Bất kỳ ngoại lệ nào, ngoại trừ python -m unittest tests/test_something.py063 hoặc python -m unittest tests/test_something.py041, được nêu ra theo phương pháp này sẽ được coi là lỗi bổ sung thay vì lỗi thử nghiệm (do đó làm tăng tổng số lỗi được báo cáo). Phương thức này sẽ chỉ được gọi nếu python -m unittest tests/test_something.py666 thành công, bất kể kết quả của phương thức thử nghiệm là gì. Việc thực hiện mặc định không có gìaddAsyncCleanup(chức năng , /, *args, **kwargs)¶ Phương pháp này chấp nhận một coroutine có thể được sử dụng làm chức năng dọn dẹp coroutine enterAsyncContext(cm)¶Nhập trình quản lý bối cảnh không đồng bộ được cung cấp. If successful, also add its python -m unittest tests/test_something.py667 method as a cleanup function by python -m unittest tests/test_something.py668 and return the result of the python -m unittest tests/test_something.py669 method. Mới trong phiên bản 3. 11 chạy(kết quả=Không có)¶Thiết lập một vòng lặp sự kiện mới để chạy thử nghiệm, thu thập kết quả vào đối tượng python -m unittest tests/test_something.py037 được chuyển thành kết quả. Nếu kết quả bị bỏ qua hoặc python -m unittest tests/test_something.py52, một đối tượng kết quả tạm thời được tạo (bằng cách gọi phương thức python -m unittest tests/test_something.py074) và được sử dụng. Đối tượng kết quả được trả về người gọi của python -m unittest tests/test_something.py075. Khi kết thúc kiểm tra, tất cả các tác vụ trong vòng lặp sự kiện đều bị hủy Một ví dụ minh họa thứ tự python -m unittest tests/test_something.py67 Sau khi chạy thử nghiệm, python -m unittest tests/test_something.py674 sẽ chứa python -m unittest tests/test_something.py675lớp đơn vị kiểm tra. FunctionTestCase(testFunc , thiết lập=None, tearDown=None, description=None)¶ Lớp này thực hiện một phần của giao diện python -m unittest -v test_module3 cho phép người chạy thử nghiệm thực hiện thử nghiệm, nhưng không cung cấp các phương thức mà mã thử nghiệm có thể sử dụng để kiểm tra và báo cáo lỗi. Điều này được sử dụng để tạo các trường hợp thử nghiệm bằng cách sử dụng mã thử nghiệm kế thừa, cho phép nó được tích hợp vào khung thử nghiệm dựa trên python -m unittest tests/test_something.py9 Bí danh không dùng nữa¶Vì những lý do lịch sử, một số phương pháp python -m unittest -v test_module3 có một hoặc nhiều bí danh hiện không được dùng nữa. Bảng sau đây liệt kê các tên chính xác cùng với các bí danh không dùng nữa
Grouping tests¶class unittest. TestSuite(tests=()) ¶This class represents an aggregation of individual test cases and test suites. The class presents the interface needed by the test runner to allow it to be run as any other test case. Running a python -m unittest tests/test_something.py020 instance is the same as iterating over the suite, running each test individually Nếu các bài kiểm tra được cung cấp, nó phải là một lần lặp lại của các trường hợp kiểm tra riêng lẻ hoặc các bộ kiểm tra khác sẽ được sử dụng để xây dựng bộ ban đầu. Các phương pháp bổ sung được cung cấp để thêm các trường hợp và bộ thử nghiệm vào bộ sưu tập sau này Các đối tượng python -m unittest tests/test_something.py020 hoạt động giống như các đối tượng python -m unittest -v test_module3, ngoại trừ việc chúng không thực sự triển khai thử nghiệm. Thay vào đó, chúng được sử dụng để tổng hợp các bài kiểm tra thành các nhóm bài kiểm tra sẽ được chạy cùng nhau. Some additional methods are available to add tests to python -m unittest tests/test_something.py020 instancesaddTest(test) ¶ Add a python -m unittest -v test_module3 or python -m unittest tests/test_something.py020 to the suiteaddTests(tests) ¶ Add all the tests from an iterable of python -m unittest -v test_module3 and python -m unittest tests/test_something.py020 instances to this test suite This is equivalent to iterating over tests, calling python -m unittest tests/test_something.py03 for each element python -m unittest tests/test_something.py020 chia sẻ các phương pháp sau với python -m unittest -v test_module3run(result) ¶ Run the tests associated with this suite, collecting the result into the test result object passed as result. Note that unlike python -m unittest tests/test_something.py06, python -m unittest tests/test_something.py07 requires the result object to be passed ingỡ lỗi() ¶ Chạy các bài kiểm tra được liên kết với bộ phần mềm này mà không thu thập kết quả. This allows exceptions raised by the test to be propagated to the caller and can be used to support running tests under a debugger countTestCases() ¶Return the number of tests represented by this test object, including all individual tests and sub-suites __iter__() ¶Tests grouped by a python -m unittest tests/test_something.py020 are always accessed by iteration. Subclasses can lazily provide tests by overriding python -m unittest tests/test_something.py09. Note that this method may be called several times on a single suite (for example when counting tests or comparing for equality) so the tests returned by repeated iterations before python -m unittest tests/test_something.py07 must be the same for each call iteration. After python -m unittest tests/test_something.py07, callers should not rely on the tests returned by this method unless the caller uses a subclass that overrides python -m unittest tests/test_something.py12 to preserve test references Changed in version 3. 2. In earlier versions the python -m unittest tests/test_something.py020 accessed tests directly rather than through iteration, so overriding python -m unittest tests/test_something.py09 wasn’t sufficient for providing tests. Changed in version 3. 4. In earlier versions the python -m unittest tests/test_something.py020 held references to each python -m unittest -v test_module3 after python -m unittest tests/test_something.py07. Subclasses can restore that behavior by overriding python -m unittest tests/test_something.py12. In the typical usage of a python -m unittest tests/test_something.py020 object, the python -m unittest tests/test_something.py075 method is invoked by a python -m unittest tests/test_something.py21 rather than by the end-user test harness Loading and running tests¶lớp đơn vị kiểm tra. TestLoader ¶The python -m unittest tests/test_something.py22 class is used to create test suites from classes and modules. Normally, there is no need to create an instance of this class; the python -m unittest tests/test_something.py9 module provides an instance that can be shared as python -m unittest tests/test_something.py24. Using a subclass or instance, however, allows customization of some configurable properties python -m unittest tests/test_something.py22 objects have the following attributeserrors ¶ A list of the non-fatal errors encountered while loading tests. Not reset by the loader at any point. Fatal errors are signalled by the relevant method raising an exception to the caller. Non-fatal errors are also indicated by a synthetic test that will raise the original error when run Mới trong phiên bản 3. 5 python -m unittest tests/test_something.py22 objects have the following methodsloadTestsFromTestCase(testCaseClass) ¶ Return a suite of all test cases contained in the python -m unittest -v test_module3-derived python -m unittest tests/test_something.py28 A test case instance is created for each method named by python -m unittest tests/test_something.py29. By default these are the method names beginning with python -m unittest tests/test_something.py10. If python -m unittest tests/test_something.py29 returns no methods, but the python -m unittest tests/test_something.py059 method is implemented, a single test case is created for that method insteadloadTestsFromModule(module , pattern=None) ¶ Return a suite of all test cases contained in the given module. This method searches module for classes derived from python -m unittest -v test_module3 and creates an instance of the class for each test method defined for the class Ghi chú Mặc dù việc sử dụng hệ thống phân cấp của các lớp có nguồn gốc từ python -m unittest -v test_module3 có thể thuận tiện trong việc chia sẻ các hàm trợ giúp và đồ đạc, nhưng việc xác định các phương thức kiểm tra trên các lớp cơ sở không nhằm mục đích khởi tạo trực tiếp sẽ không hoạt động tốt với phương thức này. Doing so, however, can be useful when the fixtures are different and defined in subclasses If a module provides a python -m unittest tests/test_something.py35 function it will be called to load the tests. This allows modules to customize test loading. This is the load_tests protocol. The pattern argument is passed as the third argument to python -m unittest tests/test_something.py35 Đã thay đổi trong phiên bản 3. 2. Support for python -m unittest tests/test_something.py35 added. Changed in version 3. 5. The undocumented and unofficial use_load_tests default argument is deprecated and ignored, although it is still accepted for backward compatibility. The method also now accepts a keyword-only argument pattern which is passed to python -m unittest tests/test_something.py35 as the third argument. loadTestsFromName(name , module=None) ¶ Return a suite of all test cases given a string specifier The specifier name is a “dotted name” that may resolve either to a module, a test case class, a test method within a test case class, a python -m unittest tests/test_something.py020 instance, or a callable object which returns a python -m unittest -v test_module3 or python -m unittest tests/test_something.py020 instance. These checks are applied in the order listed here; that is, a method on a possible test case class will be picked up as “a test method within a test case class”, rather than “a callable object” For example, if you have a module python -m unittest tests/test_something.py42 containing a python -m unittest -v test_module3-derived class python -m unittest tests/test_something.py44 with three test methods ( python -m unittest tests/test_something.py45, python -m unittest tests/test_something.py46, and python -m unittest tests/test_something.py47), the specifier python -m unittest tests/test_something.py48 would cause this method to return a suite which will run all three test methods. Using the specifier python -m unittest tests/test_something.py49 would cause it to return a test suite which will run only the python -m unittest tests/test_something.py46 test method. The specifier can refer to modules and packages which have not been imported; they will be imported as a side-effect The method optionally resolves name relative to the given module Changed in version 3. 5. If an python -m unittest tests/test_something.py51 or python -m unittest tests/test_something.py52 occurs while traversing name then a synthetic test that raises that error when run will be returned. These errors are included in the errors accumulated by self. errors. loadTestsFromNames(names , module=None) ¶ Similar to python -m unittest tests/test_something.py53, but takes a sequence of names rather than a single name. The return value is a test suite which supports all the tests defined for each namegetTestCaseNames(testCaseClass) ¶ Return a sorted sequence of method names found within testCaseClass; this should be a subclass of python -m unittest -v test_module3discover(start_dir , pattern='test*. py' , top_level_dir=None) ¶ Find all the test modules by recursing into subdirectories from the specified start directory, and return a TestSuite object containing them. Only test files that match pattern will be loaded. (Using shell style pattern matching. ) Only module names that are importable (i. e. là số nhận dạng Python hợp lệ) sẽ được tải Tất cả các mô-đun thử nghiệm phải được nhập từ cấp cao nhất của dự án. If the start directory is not the top level directory then the top level directory must be specified separately Nếu nhập một mô-đun không thành công, chẳng hạn như do lỗi cú pháp, thì lỗi này sẽ được ghi lại dưới dạng một lỗi duy nhất và quá trình khám phá sẽ tiếp tục. If the import failure is due to python -m unittest tests/test_something.py041 being raised, it will be recorded as a skip instead of an error If a package (a directory containing a file named python -m unittest -v test_module99) is found, the package will be checked for a python -m unittest tests/test_something.py35 function. If this exists then it will be called python -m unittest tests/test_something.py58. Test discovery takes care to ensure that a package is only checked for tests once during an invocation, even if the load_tests function itself calls python -m unittest tests/test_something.py59 If python -m unittest tests/test_something.py35 exists then discovery does not recurse into the package, python -m unittest tests/test_something.py35 is responsible for loading all tests in the package The pattern is deliberately not stored as a loader attribute so that packages can continue discovery themselves. top_level_dir is stored so python -m unittest tests/test_something.py35 does not need to pass this argument in to python -m unittest tests/test_something.py63 start_dir can be a dotted module name as well as a directory Mới trong phiên bản 3. 2 Changed in version 3. 4. Các mô-đun tăng python -m unittest tests/test_something.py041 khi nhập được ghi lại là bỏ qua, không phải lỗi. Changed in version 3. 4. start_dir can be a namespace packages . Changed in version 3. 4. Paths are sorted before being imported so that execution order is the same even if the underlying file system’s ordering is not dependent on file name. Changed in version 3. 5. Found packages are now checked for python -m unittest tests/test_something.py35 regardless of whether their path matches pattern, because it is impossible for a package name to match the default pattern. Đã thay đổi trong phiên bản 3. 11. start_dir không được là gói không gian tên . It has been broken since Python 3. 7 và Trăn 3. 11 chính thức loại bỏ nó. Các thuộc tính sau của python -m unittest tests/test_something.py22 có thể được cấu hình bằng cách phân lớp hoặc gán trên một phiên bảntestMethodPrefix ¶ Chuỗi đưa ra tiền tố của tên phương thức sẽ được hiểu là phương thức thử nghiệm. The default value is python -m unittest tests/test_something.py67 Điều này ảnh hưởng đến python -m unittest tests/test_something.py29 và tất cả các phương thức của python -m unittest tests/test_something.py69sortTestMethodsSử dụng ¶ Function to be used to compare method names when sorting them in python -m unittest tests/test_something.py29 and all the python -m unittest tests/test_something.py69 methodssuiteClass ¶ Đối tượng có thể gọi được xây dựng bộ thử nghiệm từ danh sách các thử nghiệm. No methods on the resulting object are needed. The default value is the python -m unittest tests/test_something.py020 class This affects all the python -m unittest tests/test_something.py69 methodstestNamePatterns ¶ List of Unix shell-style wildcard test name patterns that test methods have to match to be included in test suites (see python -m unittest tests/test_something.py19 option) Nếu thuộc tính này không phải là python -m unittest tests/test_something.py52 (mặc định), thì tất cả các phương thức kiểm tra được đưa vào bộ kiểm tra phải khớp với một trong các mẫu trong danh sách này. Note that matches are always performed using python -m unittest tests/test_something.py55, so unlike patterns passed to the python -m unittest tests/test_something.py19 option, simple substring patterns will have to be converted using python -m unittest tests/test_something.py54 wildcards This affects all the python -m unittest tests/test_something.py69 methods New in version 3. 7 lớp đơn vị kiểm tra. TestResult ¶This class is used to compile information about which tests have succeeded and which have failed A python -m unittest tests/test_something.py037 object stores the results of a set of tests. The python -m unittest -v test_module3 and python -m unittest tests/test_something.py020 classes ensure that results are properly recorded; test authors do not need to worry about recording the outcome of tests Các khung thử nghiệm được xây dựng dựa trên python -m unittest tests/test_something.py9 có thể muốn truy cập vào đối tượng python -m unittest tests/test_something.py037 được tạo bằng cách chạy một bộ thử nghiệm cho mục đích báo cáo; python -m unittest tests/test_something.py037 instances have the following attributes that will be of interest when inspecting the results of running a set of testserrors ¶ Một danh sách chứa 2 bộ dữ liệu của các phiên bản python -m unittest -v test_module3 và các chuỗi chứa các dấu vết được định dạng. Each tuple represents a test which raised an unexpected exceptionlỗi ¶ A list containing 2-tuples of python -m unittest -v test_module3 instances and strings holding formatted tracebacks. Each tuple represents a test where a failure was explicitly signalled using the python -m unittest tests/test_something.py90 methodsskipped ¶ A list containing 2-tuples of python -m unittest -v test_module3 instances and strings holding the reason for skipping the test Mới trong phiên bản 3. 1 expectedFailures ¶Một danh sách chứa 2 bộ dữ liệu của các phiên bản python -m unittest -v test_module3 và các chuỗi chứa các dấu vết được định dạng. Each tuple represents an expected failure or error of the test caseThành công bất ngờ ¶ A list containing python -m unittest -v test_module3 instances that were marked as expected failures, but succeedednên Dừng lại ¶ Đặt thành python -m unittest tests/test_something.py613 khi quá trình thực hiện kiểm tra sẽ dừng lại trước python -m unittest tests/test_something.py95testsRun ¶ The total number of tests run so far bộ đệm ¶If set to true, python -m unittest tests/test_something.py96 and python -m unittest tests/test_something.py97 will be buffered in between python -m unittest tests/test_something.py98 and python -m unittest tests/test_something.py99 being called. Đầu ra được thu thập sẽ chỉ được lặp lại trên python -m unittest tests/test_something.py96 và python -m unittest tests/test_something.py97 thực nếu thử nghiệm không thành công hoặc có lỗi. Any output is also attached to the failure / error message Mới trong phiên bản 3. 2 failfast ¶If set to true python -m unittest tests/test_something.py95 will be called on the first failure or error, halting the test run Mới trong phiên bản 3. 2 tb_locals ¶If set to true then local variables will be shown in tracebacks Mới trong phiên bản 3. 5 wasSuccessful() ¶Return python -m unittest tests/test_something.py613 if all tests run so far have passed, otherwise returns python -m unittest tests/test_something.py614 Changed in version 3. 4. Returns python -m unittest tests/test_something.py614 if there were any python -m unittest -v test_module06 from tests marked with the python -m unittest tests/test_something.py043 decorator. stop() ¶ This method can be called to signal that the set of tests being run should be aborted by setting the python -m unittest -v test_module08 attribute to python -m unittest tests/test_something.py613. Các đối tượng python -m unittest tests/test_something.py21 phải tôn trọng cờ này và quay lại mà không chạy bất kỳ kiểm tra bổ sung nào For example, this feature is used by the python -m unittest -v test_module11 class to stop the test framework when the user signals an interrupt from the keyboard. Interactive tools which provide python -m unittest tests/test_something.py21 implementations can use this in a similar manner Các phương thức sau của lớp python -m unittest tests/test_something.py037 được sử dụng để duy trì cấu trúc dữ liệu nội bộ và có thể được mở rộng trong các lớp con để hỗ trợ các yêu cầu báo cáo bổ sung. Điều này đặc biệt hữu ích trong việc xây dựng các công cụ hỗ trợ báo cáo tương tác trong khi chạy thử nghiệmstartTest(test) ¶ Được gọi khi test case chuẩn bị chạy stopTest(test) ¶Được gọi sau khi test case test đã được thực thi, bất kể kết quả như thế nào startTestRun() ¶Được gọi một lần trước khi bất kỳ kiểm tra nào được thực hiện Mới trong phiên bản 3. 1 stopTestRun() ¶Called once after all tests are executed Mới trong phiên bản 3. 1 addError(test , err)¶Được gọi khi kiểm tra trường hợp thử nghiệm phát sinh một ngoại lệ không mong muốn. err là một bộ có dạng được trả về bởi python -m unittest -v test_module14. python -m unittest -v test_module15 The default implementation appends a tuple python -m unittest -v test_module16 to the instance’s python -m unittest -v test_module17 attribute, where formatted_err is a formatted traceback derived from erraddFailure(kiểm tra , err)¶ Được gọi khi kiểm tra trường hợp thử nghiệm báo hiệu lỗi. err is a tuple of the form returned by python -m unittest -v test_module14. python -m unittest -v test_module15 Việc triển khai mặc định sẽ nối một bộ python -m unittest -v test_module16 vào thuộc tính python -m unittest -v test_module21 của cá thể, trong đó formatted_err là một truy nguyên được định dạng bắt nguồn từ erraddSuccess(kiểm tra) ¶ Được gọi khi test case test thành công Việc thực hiện mặc định không có gì addSkip(kiểm tra , lý do)¶Called when the test case test is skipped. lý do là lý do bài kiểm tra đưa ra để bỏ qua Việc triển khai mặc định nối thêm một tuple python -m unittest -v test_module22 vào thuộc tính python -m unittest -v test_module23 của cá thểaddExpectedFailure(test , err) ¶ Được gọi khi kiểm tra trường hợp thử nghiệm không thành công hoặc có lỗi, nhưng được đánh dấu bằng trình trang trí python -m unittest tests/test_something.py043 Việc triển khai mặc định sẽ nối thêm một bộ python -m unittest -v test_module16 vào thuộc tính python -m unittest -v test_module26 của cá thể, trong đó formatted_err là một truy nguyên được định dạng bắt nguồn từ erraddUnexpectedSuccess(test) ¶ Được gọi khi kiểm thử trường hợp thử nghiệm được đánh dấu bằng trình trang trí python -m unittest tests/test_something.py043, nhưng đã thành công Việc triển khai mặc định nối thêm thử nghiệm vào thuộc tính python -m unittest -v test_module06 của cá thểaddSubTest(test , subtest , outcome) ¶ Được gọi khi một subtest kết thúc. test is the test case corresponding to the test method. bài kiểm tra phụ là một phiên bản python -m unittest -v test_module3 tùy chỉnh mô tả bài kiểm tra phụ If outcome is python -m unittest tests/test_something.py52, the subtest succeeded. Mặt khác, nó không thành công với một ngoại lệ trong đó kết quả là một bộ có dạng được trả về bởi python -m unittest -v test_module14. python -m unittest -v test_module15 Việc triển khai mặc định không làm gì khi kết quả thành công và ghi lại các lỗi kiểm tra phụ như các lỗi thông thường Mới trong phiên bản 3. 4 class unittest. TextTestResult(luồng , mô tả, verbosity)¶A concrete implementation of python -m unittest tests/test_something.py037 used by the python -m unittest -v test_module11 New in version 3. 2. This class was previously named python -m unittest -v test_module35. The old name still exists as an alias but is deprecated. đơn vị nhất. defaultTestLoader ¶ Thể hiện của lớp python -m unittest tests/test_something.py22 dự định được chia sẻ. If no customization of the python -m unittest tests/test_something.py22 is needed, this instance can be used instead of repeatedly creating new instanceslớp đơn vị kiểm tra. TextTestRunner(stream=None , descriptions=True , verbosity=1 , failfast=False , buffer=False , resultclass=None , warnings=None , * , tb_locals=False) ¶ A basic test runner implementation that outputs results to a stream. Nếu luồng là python -m unittest tests/test_something.py52, mặc định, python -m unittest tests/test_something.py97 được sử dụng làm luồng đầu ra. Lớp này có một vài tham số có thể cấu hình, nhưng về cơ bản thì rất đơn giản. Các ứng dụng đồ họa chạy bộ thử nghiệm sẽ cung cấp các triển khai thay thế. Such implementations should accept python -m unittest -v test_module40 as the interface to construct runners changes when features are added to unittest Theo mặc định, trình chạy này hiển thị python -m unittest -v test_module41, python -m unittest -v test_module42, python -m unittest -v test_module43 và python -m unittest -v test_module44 ngay cả khi chúng bị bỏ qua theo mặc định . Deprecation warnings caused by deprecated unittest methods are also special-cased and, when the warning filters are python -m unittest -v test_module45 or python -m unittest -v test_module46, they will appear only once per-module, in order to avoid too many warning messages. This behavior can be overridden using Python’s python -m unittest -v test_module47 or python -m unittest -v test_module48 options (see Warning control ) and leaving warnings to python -m unittest tests/test_something.py52. Changed in version 3. 2. Added the python -m unittest -v test_module50 argument. Đã thay đổi trong phiên bản 3. 2. The default stream is set to python -m unittest tests/test_something.py97 at instantiation time rather than import time. Changed in version 3. 5. Đã thêm thông số tb_locals. _makeResult() ¶Phương thức này trả về phiên bản của python -m unittest tests/test_something.py037 được sử dụng bởi python -m unittest tests/test_something.py075. It is not intended to be called directly, but can be overridden in subclasses to provide a custom python -m unittest tests/test_something.py037 python -m unittest -v test_module55 instantiates the class or callable passed in the python -m unittest -v test_module11 constructor as the python -m unittest -v test_module57 argument. It defaults to python -m unittest tests/test_something.py630 if no python -m unittest -v test_module57 is provided. The result class is instantiated with the following arguments python -m unittest tests/test_something.py68run(test) ¶ Phương thức này là giao diện công khai chính của python -m unittest -v test_module11. This method takes a python -m unittest tests/test_something.py020 or python -m unittest -v test_module3 instance. A python -m unittest tests/test_something.py037 is created by calling python -m unittest -v test_module55 and the test(s) are run and the results printed to stdoutunittest. chính(mô-đun=' . defaultTestLoader, defaultTest=None, argv=None, testRunner=None, testLoader=unittest.defaultTestLoader , thoát=True, verbosity=1, failfast=None, catchbreak=None, buffer=None, warnings=None)¶ Một chương trình dòng lệnh tải một tập hợp các bài kiểm tra từ mô-đun và chạy chúng; . The simplest use for this function is to include the following line at the end of a test script python -m unittest tests/test_something.py69 Bạn có thể chạy thử nghiệm với thông tin chi tiết hơn bằng cách chuyển vào đối số chi tiết python -m unittest tests/test_something.py0 Đối số defaultTest là tên của một thử nghiệm đơn lẻ hoặc một tên thử nghiệm lặp lại để chạy nếu không có tên thử nghiệm nào được chỉ định qua argv. Nếu không được chỉ định hoặc python -m unittest tests/test_something.py52 và không có tên kiểm tra nào được cung cấp qua argv, tất cả các kiểm tra được tìm thấy trong mô-đun sẽ được chạy Đối số argv có thể là danh sách các tùy chọn được chuyển đến chương trình, với phần tử đầu tiên là tên chương trình. Nếu không được chỉ định hoặc python -m unittest tests/test_something.py52, các giá trị của python -m unittest -v test_module67 được sử dụng Đối số testRunner có thể là một lớp người chạy thử nghiệm hoặc một thể hiện đã được tạo của nó. Theo mặc định, python -m unittest -v test_module68 gọi python -m unittest -v test_module69 với mã thoát cho biết thành công hay thất bại của quá trình chạy thử nghiệm Đối số testLoader phải là phiên bản python -m unittest tests/test_something.py22 và mặc định là python -m unittest -v test_module71 Hỗ trợ python -m unittest -v test_module68 được sử dụng từ trình thông dịch tương tác bằng cách chuyển vào đối số python -m unittest -v test_module73. Điều này hiển thị kết quả trên đầu ra tiêu chuẩn mà không cần gọi python -m unittest -v test_module69 python -m unittest tests/test_something.py1 Các tham số failfast, catchbreak và buffer có tác dụng tương tự như các tùy chọn dòng lệnh cùng tên The warnings argument specifies the warning filter that should be used while running the tests. Nếu nó không được chỉ định, nó sẽ vẫn là python -m unittest tests/test_something.py52 nếu tùy chọn python -m unittest -v test_module76 được chuyển cho python (xem Kiểm soát cảnh báo ), nếu không, nó sẽ được đặt thành python -m unittest -v test_module45. Gọi python -m unittest -v test_module68 thực sự trả về một thể hiện của lớp python -m unittest -v test_module79. Điều này lưu trữ kết quả của các lần chạy thử nghiệm dưới dạng thuộc tính python -m unittest -v test_module80 Đã thay đổi trong phiên bản 3. 1. Tham số thoát đã được thêm vào. Đã thay đổi trong phiên bản 3. 2. Các tham số độ chi tiết, failfast, catchbreak, bộ đệm và cảnh báo đã được thêm vào. Changed in version 3. 4. Tham số defaultTest đã được thay đổi để cũng chấp nhận tên thử nghiệm có thể lặp lại. load_tests Giao thức¶Mới trong phiên bản 3. 2 Các mô-đun hoặc gói có thể tùy chỉnh cách các bài kiểm tra được tải từ chúng trong quá trình chạy thử nghiệm thông thường hoặc phát hiện thử nghiệm bằng cách triển khai một chức năng có tên là python -m unittest tests/test_something.py35 Nếu một mô-đun thử nghiệm xác định python -m unittest tests/test_something.py35 thì nó sẽ được gọi bởi python -m unittest -v test_module83 với các đối số sau python -m unittest tests/test_something.py2 nơi mẫu được truyền thẳng từ python -m unittest -v test_module84. Nó mặc định là python -m unittest tests/test_something.py52 Nó sẽ trả về một python -m unittest tests/test_something.py020 trình tải là ví dụ của python -m unittest tests/test_something.py22 đang tải. standard_tests là các bài kiểm tra sẽ được tải theo mặc định từ mô-đun. Thông thường, các mô-đun thử nghiệm chỉ muốn thêm hoặc xóa các thử nghiệm khỏi bộ thử nghiệm tiêu chuẩn. Đối số thứ ba được sử dụng khi tải các gói như một phần của khám phá thử nghiệm Một hàm python -m unittest tests/test_something.py35 điển hình tải các bài kiểm tra từ một tập hợp các lớp python -m unittest -v test_module3 cụ thể có thể giống như python -m unittest tests/test_something.py3 Nếu khám phá được bắt đầu trong một thư mục chứa một gói, từ dòng lệnh hoặc bằng cách gọi python -m unittest -v test_module85, thì gói python -m unittest -v test_module99 sẽ được kiểm tra cho python -m unittest tests/test_something.py35. Nếu chức năng đó không tồn tại, khám phá sẽ lặp lại trong gói như thể nó chỉ là một thư mục khác. Mặt khác, việc khám phá các bài kiểm tra của gói sẽ bị bỏ lại cho đến khi python -m unittest tests/test_something.py35 được gọi với các đối số sau python -m unittest tests/test_something.py2 Điều này sẽ trả về một python -m unittest tests/test_something.py020 đại diện cho tất cả các bài kiểm tra từ gói. ( python -m unittest -v test_module95 sẽ chỉ chứa các bài kiểm tra được thu thập từ python -m unittest -v test_module99. ) Vì mẫu được chuyển vào python -m unittest tests/test_something.py35 nên gói được tự do tiếp tục (và có khả năng sửa đổi) khám phá thử nghiệm. Chức năng 'không làm gì' python -m unittest tests/test_something.py35 cho gói thử nghiệm sẽ như thế nào python -m unittest tests/test_something.py5 Đã thay đổi trong phiên bản 3. 5. Discovery không còn kiểm tra tên gói để tìm mẫu khớp do không thể có tên gói khớp với mẫu mặc định. Thiết bị cố định lớp và mô-đun¶Đồ đạc cấp lớp và mô-đun được triển khai vào python -m unittest tests/test_something.py020. Khi bộ kiểm tra gặp một bài kiểm tra từ một lớp mới thì python -m unittest tests/test_something.py049 từ lớp trước đó (nếu có) được gọi, tiếp theo là python -m unittest tests/test_something.py048 từ lớp mới Tương tự, nếu thử nghiệm từ một mô-đun khác với thử nghiệm trước đó thì python -m unittest tests/test_something.py102 từ mô-đun trước đó sẽ được chạy, tiếp theo là python -m unittest tests/test_something.py103 từ mô-đun mới Sau khi tất cả các thử nghiệm đã chạy, python -m unittest tests/test_something.py070 và python -m unittest tests/test_something.py102 cuối cùng sẽ được chạy Lưu ý rằng các thiết bị cố định được chia sẻ không hoạt động tốt với các tính năng [tiềm năng] như song song hóa thử nghiệm và chúng phá vỡ sự cô lập thử nghiệm. They should be used with care Thứ tự mặc định của các bài kiểm tra được tạo bởi bộ tải kiểm tra unittest là nhóm tất cả các bài kiểm tra từ cùng các mô-đun và lớp lại với nhau. Điều này sẽ dẫn đến việc python -m unittest tests/test_something.py068 / python -m unittest tests/test_something.py103 (v.v.) được gọi chính xác một lần cho mỗi lớp và mô-đun. Nếu bạn sắp xếp thứ tự ngẫu nhiên, để các bài kiểm tra từ các mô-đun và lớp khác nhau liền kề nhau, thì các hàm cố định được chia sẻ này có thể được gọi nhiều lần trong một lần chạy thử nghiệm Shared fixtures are not intended to work with suites with non-standard ordering. Một python -m unittest tests/test_something.py108 vẫn tồn tại đối với các khung không muốn hỗ trợ đồ đạc được chia sẻ Nếu có bất kỳ ngoại lệ nào được đưa ra trong một trong các chức năng cố định được chia sẻ, thử nghiệm sẽ được báo cáo là lỗi. Bởi vì không có phiên bản thử nghiệm tương ứng, một đối tượng python -m unittest tests/test_something.py109 (có cùng giao diện với python -m unittest -v test_module3) được tạo để biểu thị lỗi. Nếu bạn chỉ đang sử dụng trình chạy thử nghiệm unittest tiêu chuẩn thì chi tiết này không thành vấn đề, nhưng nếu bạn là tác giả của framework thì nó có thể liên quan setUpClass và TearsDownClass¶Chúng phải được thực hiện như các phương thức lớp python -m unittest tests/test_something.py6 Nếu bạn muốn gọi python -m unittest tests/test_something.py068 và python -m unittest tests/test_something.py070 trên các lớp cơ sở thì bạn phải tự gọi chúng. Việc triển khai trong python -m unittest -v test_module3 trống Nếu một ngoại lệ được đưa ra trong một python -m unittest tests/test_something.py068 thì các bài kiểm tra trong lớp sẽ không chạy và python -m unittest tests/test_something.py070 không chạy. Skipped classes will not have python -m unittest tests/test_something.py068 or python -m unittest tests/test_something.py070 run. Nếu ngoại lệ là ngoại lệ python -m unittest tests/test_something.py041 thì lớp sẽ được báo cáo là đã bị bỏ qua thay vì lỗi setUpModule and tearDownModule¶Chúng nên được thực hiện như các chức năng python -m unittest tests/test_something.py7 If an exception is raised in a python -m unittest tests/test_something.py103 then none of the tests in the module will be run and the python -m unittest tests/test_something.py102 will not be run. If the exception is a python -m unittest tests/test_something.py041 exception then the module will be reported as having been skipped instead of as an error Để thêm mã dọn dẹp phải chạy ngay cả trong trường hợp ngoại lệ, hãy sử dụng python -m unittest tests/test_something.py122đơn vị nhất. addModuleCleanup(chức năng , /, *args, **kwargs)¶ Thêm một chức năng được gọi sau python -m unittest tests/test_something.py051 để dọn dẹp các tài nguyên được sử dụng trong lớp kiểm tra. Các chức năng sẽ được gọi theo thứ tự ngược lại với thứ tự chúng được thêm vào (LIFO). Chúng được gọi với bất kỳ đối số và đối số từ khóa nào được chuyển vào python -m unittest tests/test_something.py124 khi chúng được thêm vào Nếu python -m unittest tests/test_something.py050 không thành công, nghĩa là python -m unittest tests/test_something.py051 không được gọi, thì mọi chức năng dọn dẹp được thêm vào sẽ vẫn được gọi Mới trong phiên bản 3. 8 classmethod unittest. enterModuleContext(cm) ¶Nhập trình quản lý ngữ cảnh được cung cấp. Nếu thành công, hãy thêm phương thức python -m unittest tests/test_something.py635 của nó làm hàm dọn dẹp trước python -m unittest tests/test_something.py124 và trả về kết quả của phương thức python -m unittest tests/test_something.py637. Mới trong phiên bản 3. 11 đơn vị nhất. doModuleCleanups() ¶Hàm này được gọi vô điều kiện sau python -m unittest tests/test_something.py051 hoặc sau python -m unittest tests/test_something.py050 nếu python -m unittest tests/test_something.py050 đưa ra một ngoại lệ Nó chịu trách nhiệm gọi tất cả các chức năng dọn dẹp được thêm bởi python -m unittest tests/test_something.py124. Nếu bạn cần gọi hàm dọn dẹp trước python -m unittest tests/test_something.py051 thì bạn có thể tự gọi python -m unittest tests/test_something.py135 python -m unittest tests/test_something.py135 bật từng phương thức ra khỏi ngăn xếp của các hàm dọn dẹp, vì vậy nó có thể được gọi bất cứ lúc nào Mới trong phiên bản 3. 8 Xử lý tín hiệu¶Mới trong phiên bản 3. 2 Tùy chọn dòng lệnh python -m unittest tests/test_something.py137 để unittest, cùng với tham số python -m unittest tests/test_something.py138 đến python -m unittest tests/test_something.py18, cung cấp khả năng xử lý control-C thân thiện hơn trong quá trình chạy thử. Với hành vi bắt ngắt được kích hoạt, control-C sẽ cho phép hoàn thành kiểm tra hiện đang chạy và quá trình chạy kiểm tra sau đó sẽ kết thúc và báo cáo tất cả các kết quả cho đến nay. Control-c thứ hai sẽ tăng python -m unittest tests/test_something.py53 theo cách thông thường Trình xử lý tín hiệu xử lý control-c cố gắng duy trì khả năng tương thích với mã hoặc các bài kiểm tra cài đặt trình xử lý python -m unittest tests/test_something.py141 của riêng chúng. Nếu trình xử lý python -m unittest tests/test_something.py9 được gọi nhưng không phải là trình xử lý python -m unittest tests/test_something.py141 đã cài đặt, tôi. e. nó đã được thay thế bởi hệ thống đang thử nghiệm và được ủy quyền, sau đó nó gọi trình xử lý mặc định. Đây thường sẽ là hành vi được mong đợi bằng mã thay thế trình xử lý đã cài đặt và ủy quyền cho nó. Đối với các thử nghiệm riêng lẻ cần xử lý python -m unittest tests/test_something.py9 control-c bị vô hiệu hóa, có thể sử dụng trình trang trí python -m unittest tests/test_something.py145 Có một vài chức năng tiện ích cho các tác giả khung để kích hoạt chức năng xử lý control-c trong các khung kiểm tra đơn vị nhất. installHandler() ¶Cài đặt trình xử lý control-c. Khi nhận được một python -m unittest tests/test_something.py141 (thường là để phản hồi lại việc người dùng nhấn control-c), tất cả các kết quả đã đăng ký đều có tên là python -m unittest tests/test_something.py95đơn vị nhất. registerResult(kết quả) ¶ Đăng ký một đối tượng python -m unittest tests/test_something.py037 để xử lý control-c. Đăng ký một kết quả lưu trữ một tham chiếu yếu đến nó, vì vậy nó không ngăn kết quả bị thu gom rác Việc đăng ký một đối tượng python -m unittest tests/test_something.py037 không có tác dụng phụ nếu tính năng xử lý control-c không được bật, vì vậy các khung kiểm tra có thể đăng ký vô điều kiện tất cả các kết quả mà chúng tạo ra bất kể việc xử lý có được bật hay khôngđơn vị nhỏ nhất. removeResult(kết quả) ¶ Xóa kết quả đã đăng ký. Khi một kết quả đã bị xóa thì python -m unittest tests/test_something.py95 sẽ không còn được gọi trên đối tượng kết quả đó để phản hồi điều khiển-cđơn vị nhất. removeHandler(chức năng=Không có)¶ Khi được gọi mà không có đối số, hàm này sẽ xóa trình xử lý control-c nếu nó đã được cài đặt. Chức năng này cũng có thể được sử dụng làm công cụ trang trí thử nghiệm để tạm thời xóa trình xử lý trong khi thử nghiệm đang được thực thi |