Python bắt đầu với
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 Another test-support module with a very different flavor Simple Smalltalk Testing. With PatternsKent Beck’s original paper on testing frameworks using the pattern shared by python -m unittest tests/test_something.py9pytest Third-party unittest framework with a lighter-weight syntax for writing tests. For example, python -m unittest -v test_module6The Python Testing Tools Taxonomy An extensive list of Python testing tools including functional testing frameworks and mock object libraries Testing in Python Mailing ListA special-interest-group for discussion of testing, and testing tools, in Python The script python -m unittest -v test_module7 in the Python source distribution is a GUI tool for test discovery and execution. This is intended largely for ease of use for those new to unit testing. For production environments it is recommended that tests be driven by a continuous integration system such as Buildbot, Jenkins, GitHub Actions, or AppVeyor Basic example¶The python -m unittest tests/test_something.py9 module provides a rich set of tools for constructing and running tests. This section demonstrates that a small subset of the tools suffice to meet the needs of most users Here is a short script to test three string methods 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() A testcase is created by subclassing python -m unittest -v test_module9. The three individual tests are defined with methods whose names start with the letters python -m unittest tests/test_something.py10. This naming convention informs the test runner about which methods represent tests The crux of each test is a call to python -m unittest tests/test_something.py11 to check for an expected result; python -m unittest tests/test_something.py12 or python -m unittest tests/test_something.py13 to verify a condition; or python -m unittest tests/test_something.py14 to verify that a specific exception gets raised. These methods are used instead of the python -m unittest tests/test_something.py15 statement so the test runner can accumulate all test results and produce a report The python -m unittest tests/test_something.py16 and python -m unittest tests/test_something.py17 methods allow you to define instructions that will be executed before and after each test method. They are covered in more detail in the section Organizing test code . The final block shows a simple way to run the tests. 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. When run from the command line, the above script produces an output that looks like this python -m unittest tests/test_something.py0 Passing the python -m unittest tests/test_something.py19 option to your test script will instruct python -m unittest tests/test_something.py18 to enable a higher level of verbosity, and produce the following output python -m unittest tests/test_something.py3 The above examples show the most commonly used python -m unittest tests/test_something.py9 features which are sufficient to meet many everyday testing needs. The remainder of the documentation explores the full feature set from first principles Changed in version 3. 11. The behavior of returning a value from a test method (other than the default python -m unittest tests/test_something.py52 value), is now deprecated. Giao diện dòng lệnh¶The unittest module can be used from the command line to run tests from modules, classes or even individual test methods python -m unittest tests/test_something.py6 You can pass in a list with any combination of module names, and fully qualified class or method names Test modules can be specified by file path as well python -m unittest tests/test_something.py This allows you to use the shell filename completion to specify the test module. The file specified must still be importable as a module. The path is converted to a module name by removing the ‘. py’ and converting path separators into ‘. ’. If you want to execute a test file that isn’t importable as a module you should execute the file directly instead 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 When executed without arguments Test Discovery is started. python -m unittest tests/test_something.py1 For a list of all the command-line options 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 during the test run waits for the current test to end and then reports all the results so far. A second Control-C raises the normal python -m unittest tests/test_something.py53 exception 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. The command-line options python -m unittest -v test_module80, python -m unittest -v test_module81 and python -m unittest -v test_module82 were added. 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 Test Discovery¶Mới trong phiên bản 3. 2 Unittest hỗ trợ khám phá thử nghiệm đơn giản. In order to be compatible with test discovery, all of the test files must be modules or packages 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. Once test discovery has found all the test files from the start directory you specify it turns the paths into package names to import. Ví dụ: python -m unittest -v test_module96 sẽ được nhập dưới dạng python -m unittest -v test_module97 If you have a package installed globally and attempt test discovery on a different copy of the package then the import could happen from the wrong place. 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 If you supply the start directory as a package name rather than a path to a directory then discover assumes that whichever location it imports from is the location you intended, so you will not get the warning 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. To make your own test cases you must write subclasses of python -m unittest -v test_module3 or use 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ẻ. Thus python -m unittest tests/test_something.py16, python -m unittest tests/test_something.py17, and python -m unittest tests/test_something.py017 will be called once per test It is recommended that you use TestCase implementations to group tests together according to the features they test. python -m unittest tests/test_something.py9 cung cấp một cơ chế cho việc này. the test suite, represented by python -m unittest tests/test_something.py9’s python -m unittest tests/test_something.py020 class. 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ột 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 pháp. 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(msg=None , **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 All the assert methods accept a msg argument that, if specified, is used as the error message on failure (see also python -m unittest tests/test_something.py304). Note that the msg keyword argument can be passed to 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 only when they are used as a context managerassertEqual(first , second , 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ể. Changed in version 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(first , second , msg=None) ¶Kiểm tra thứ nhất và thứ hai không bằng nhau. If the values do compare equal, the test will fail assertTrue(expr , tin nhắn=None)¶assertFalse(expr, msg=None)¶Kiểm tra xem expr có đúng (hoặc sai) Note that this is equivalent to python -m unittest tests/test_something.py311 and not to python -m unittest tests/test_something.py312 (use python -m unittest tests/test_something.py313 for the latter). 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(first , second , msg=None) ¶ assertIsNot(first , second , msg=None) ¶ Test that first and second are (or are not) the same object 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 raises exc and the message matches 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 with minimum level 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ể là đối số msg được đưa ra, 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ý bối 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. Changed in version 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. Thí 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 ¶ Danh sách các đối tượng python -m unittest tests/test_something.py348 với đầu ra được định dạng của các thông báo phù hợp Thí 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 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à 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ông khớp với nhau). 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 Phương thức python -m unittest tests/test_something.py11 gửi kiểm tra đẳng thức cho các đối tượng cùng loại đến các phương thức dành riêng cho loại khác nhau. 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)¶Kiểm tra xem hai dãy có bằng nhau không. 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. Các phương thức này được sử dụng theo mặc định khi so sánh danh sách hoặc bộ dữ liệu với 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, đến python -m unittest tests/test_something.py613 hoặc python -m unittest tests/test_something.py614 trước khi gọi các phương thức xác nhận 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() ¶Phương pháp này được gọi vô điều kiện sau python -m unittest tests/test_something.py049 hoặc sau python -m unittest tests/test_something.py048 nếu python -m unittest tests/test_something.py048 đư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.py646. Nếu bạn cần gọi hàm dọn dẹp trước python -m unittest tests/test_something.py049 thì bạn có thể tự gọi python -m unittest tests/test_something.py657 python -m unittest tests/test_something.py657 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 lớp đơn vị kiểm tra. AsyncioTestCase bị cô lập(tên phương thức=')¶Lớp này cung cấp một API tương tự như python -m unittest -v test_module3 và cũng chấp nhận các coroutine làm chức năng kiểm tra 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 đưa 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. Nếu thành công, hãy thêm phương thức python -m unittest tests/test_something.py667 của nó làm chức năng dọn dẹp trước python -m unittest tests/test_something.py668 và trả về kết quả của phương thức python -m unittest tests/test_something.py669. 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
Kiểm tra nhóm¶lớp đơn vị kiểm tra. TestSuite(các bài kiểm tra=()¶Lớp này đại diện cho một tập hợp các trường hợp thử nghiệm riêng lẻ và bộ thử nghiệm. Lớp trình bày giao diện cần thiết cho người chạy thử nghiệm để cho phép nó chạy như bất kỳ trường hợp thử nghiệm nào khác. Chạy phiên bản python -m unittest tests/test_something.py020 cũng giống như chạy lặp lại bộ ứng dụng, chạy từng thử nghiệm riêng lẻ 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. Một số phương pháp bổ sung có sẵn để thêm các thử nghiệm vào phiên bản python -m unittest tests/test_something.py020addTest(test) ¶ Thêm một python -m unittest -v test_module3 hoặc python -m unittest tests/test_something.py020 vào bộaddTests(tests) ¶ Thêm tất cả các thử nghiệm từ phiên bản có thể lặp lại của python -m unittest -v test_module3 và python -m unittest tests/test_something.py020 vào bộ thử nghiệm này Điều này tương đương với việc lặp lại các bài kiểm tra, gọi python -m unittest tests/test_something.py03 cho mỗi phần tử python -m unittest tests/test_something.py020 chia sẻ các phương pháp sau với python -m unittest -v test_module3chạy(kết quả) ¶ Chạy các bài kiểm tra được liên kết với bộ phần mềm này, thu thập kết quả vào đối tượng kết quả kiểm tra được chuyển thành kết quả. Lưu ý rằng không giống như python -m unittest tests/test_something.py06, python -m unittest tests/test_something.py07 yêu cầu đối tượng kết quả được truyền vàogỡ 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ả. Đ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 countTestCases() ¶Trả về số lượng thử nghiệm được đại diện bởi đối tượng thử nghiệm này, bao gồm tất cả các thử nghiệm riêng lẻ và bộ con __iter__() ¶Các bài kiểm tra được nhóm theo một python -m unittest tests/test_something.py020 luôn được truy cập bằng cách lặp lại. Các lớp con có thể lười biếng cung cấp các bài kiểm tra bằng cách ghi đè python -m unittest tests/test_something.py09. Lưu ý rằng phương pháp này có thể được gọi nhiều lần trên một bộ duy nhất (ví dụ: khi đếm các bài kiểm tra hoặc so sánh sự bằng nhau), vì vậy các bài kiểm tra được trả về bởi các lần lặp lại trước python -m unittest tests/test_something.py07 phải giống nhau cho mỗi lần lặp lại cuộc gọi. Sau python -m unittest tests/test_something.py07, người gọi không nên dựa vào các bài kiểm tra được trả về bởi phương pháp này trừ khi người gọi sử dụng một lớp con ghi đè lên python -m unittest tests/test_something.py12 để duy trì các tham chiếu kiểm tra Đã thay đổi trong phiên bản 3. 2. Trong các phiên bản trước, python -m unittest tests/test_something.py020 đã truy cập trực tiếp các bài kiểm tra thay vì thông qua phép lặp, do đó, việc ghi đè python -m unittest tests/test_something.py09 là không đủ để cung cấp các bài kiểm tra. Đã thay đổi trong phiên bản 3. 4. Trong các phiên bản trước, python -m unittest tests/test_something.py020 giữ tham chiếu đến từng python -m unittest -v test_module3 sau python -m unittest tests/test_something.py07. Các lớp con có thể khôi phục hành vi đó bằng cách ghi đè python -m unittest tests/test_something.py12. Trong cách sử dụng thông thường của một đối tượng python -m unittest tests/test_something.py020, phương thức python -m unittest tests/test_something.py075 được gọi bởi một python -m unittest tests/test_something.py21 chứ không phải bởi khai thác thử nghiệm của người dùng cuối Tải và chạy thử nghiệm¶lớp đơn vị kiểm tra. Trình tải thử nghiệm ¶Lớp python -m unittest tests/test_something.py22 được sử dụng để tạo các bộ kiểm tra từ các lớp và mô-đun. Thông thường, không cần tạo một thể hiện của lớp này; . Tuy nhiên, việc sử dụng một lớp con hoặc cá thể cho phép tùy chỉnh một số thuộc tính có thể định cấu hình python -m unittest tests/test_something.py22 đối tượng có các thuộc tính saulỗi ¶ Danh sách các lỗi không nghiêm trọng gặp phải khi tải các bài kiểm tra. Không được thiết lập lại bởi trình tải tại bất kỳ thời điểm nào. Các lỗi nghiêm trọng được báo hiệu bằng phương thức có liên quan, đưa ra một ngoại lệ cho người gọi. Các lỗi không nghiêm trọng cũng được chỉ ra bằng một thử nghiệm tổng hợp sẽ làm tăng lỗi ban đầu khi chạy Mới trong phiên bản 3. 5 Các đối tượng python -m unittest tests/test_something.py22 có các phương thức sauloadTestsFromTestCase(testCaseClass) ¶ Trả về một bộ gồm tất cả các trường hợp thử nghiệm có trong python -m unittest tests/test_something.py28 có nguồn gốc từ python -m unittest -v test_module3 Một phiên bản trường hợp thử nghiệm được tạo cho mỗi phương thức được đặt tên bởi python -m unittest tests/test_something.py29. Theo mặc định, đây là những tên phương thức bắt đầu bằng python -m unittest tests/test_something.py10. Nếu python -m unittest tests/test_something.py29 không trả về phương thức nào, nhưng phương thức python -m unittest tests/test_something.py059 được triển khai, thay vào đó, một trường hợp thử nghiệm sẽ được tạo cho phương thức đóloadTestsFromModule(mô-đun , mẫu=None)¶ Trả về một bộ tất cả các trường hợp thử nghiệm có trong mô-đun đã cho. Phương thức này tìm kiếm mô-đun cho các lớp bắt nguồn từ python -m unittest -v test_module3 và tạo một thể hiện của lớp cho từng phương thức kiểm tra được xác định cho lớp 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. Tuy nhiên, làm như vậy có thể hữu ích khi các đồ đạc khác nhau và được xác định trong các lớp con. Nếu một mô-đun cung cấp chức năng python -m unittest tests/test_something.py35, nó sẽ được gọi để tải các bài kiểm tra. Điều này cho phép các mô-đun tùy chỉnh tải thử nghiệm. Đây là giao thức load_tests. Đối số mẫu được chuyển làm đối số thứ ba cho python -m unittest tests/test_something.py35 Đã thay đổi trong phiên bản 3. 2. Đã thêm hỗ trợ cho python -m unittest tests/test_something.py35. Đã thay đổi trong phiên bản 3. 5. Đối số mặc định use_load_tests không có giấy tờ và không chính thức không được chấp nhận và bỏ qua, mặc dù nó vẫn được chấp nhận để tương thích ngược. Phương thức hiện cũng chấp nhận mẫu đối số chỉ từ khóa được chuyển đến python -m unittest tests/test_something.py35 làm đối số thứ ba. loadTestsFromName(tên , mô-đun=None)¶ Trả về một bộ tất cả các trường hợp kiểm tra được cung cấp một trình xác định chuỗi Tên chỉ định là một "tên chấm" có thể phân giải thành mô-đun, lớp trường hợp thử nghiệm, phương thức thử nghiệm trong lớp trường hợp thử nghiệm, phiên bản python -m unittest tests/test_something.py020 hoặc đối tượng có thể gọi trả về phiên bản python -m unittest -v test_module3 hoặc python -m unittest tests/test_something.py020. Những kiểm tra này được áp dụng theo thứ tự được liệt kê ở đây; Ví dụ: nếu bạn có một mô-đun python -m unittest tests/test_something.py42 chứa một lớp dẫn xuất từ python -m unittest -v test_module3 là python -m unittest tests/test_something.py44 với ba phương pháp kiểm tra ( python -m unittest tests/test_something.py45, python -m unittest tests/test_something.py46 và python -m unittest tests/test_something.py47), bộ xác định python -m unittest tests/test_something.py48 sẽ khiến phương thức này trả về một bộ sẽ chạy cả ba phương pháp kiểm tra. Sử dụng công cụ xác định python -m unittest tests/test_something.py49 sẽ khiến nó trả về một bộ thử nghiệm sẽ chỉ chạy phương thức thử nghiệm python -m unittest tests/test_something.py46. Trình xác định có thể tham chiếu đến các mô-đun và gói chưa được nhập; Phương thức tùy chọn giải quyết tên liên quan đến mô-đun đã cho Đã thay đổi trong phiên bản 3. 5. Nếu một python -m unittest tests/test_something.py51 hoặc python -m unittest tests/test_something.py52 xảy ra trong khi duyệt tên thì một thử nghiệm tổng hợp phát sinh lỗi đó khi chạy sẽ được trả về. Những lỗi này được bao gồm trong các lỗi được tích lũy bởi bản thân. lỗi. loadTestsFromNames(tên , mô-đun=None)¶ Tương tự như python -m unittest tests/test_something.py53, nhưng có một chuỗi tên thay vì một tên duy nhất. Giá trị trả về là một bộ thử nghiệm hỗ trợ tất cả các thử nghiệm được xác định cho mỗi têngetTestCaseNames(testCaseClass) ¶ Trả về một chuỗi các tên phương thức được sắp xếp tìm thấy trong testCaseClass; khám phá(start_dir , mẫu='test*.py' , top_level_dir=Không có)¶Tìm tất cả các mô-đun thử nghiệm bằng cách đệ quy vào các thư mục con từ thư mục bắt đầu đã chỉ định và trả về một đối tượng TestSuite chứa chúng. Chỉ các tệp kiểm tra phù hợp với mẫu mới được tải. (Sử dụng khớp mẫu kiểu vỏ. ) Chỉ những tên mô-đun có thể nhập được (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. Nếu thư mục bắt đầu không phải là thư mục cấp cao nhất thì thư mục cấp cao nhất phải được chỉ định riêng 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. Nếu lỗi nhập là do python -m unittest tests/test_something.py041 được nâng lên, nó sẽ được ghi là bỏ qua thay vì lỗi Nếu một gói (một thư mục chứa tệp có tên python -m unittest -v test_module99) được tìm thấy, gói đó sẽ được kiểm tra hàm python -m unittest tests/test_something.py35. Nếu điều này tồn tại thì nó sẽ được gọi là python -m unittest tests/test_something.py58. Khám phá thử nghiệm cẩn thận để đảm bảo rằng một gói chỉ được kiểm tra các thử nghiệm một lần trong khi gọi, ngay cả khi hàm load_tests tự gọi python -m unittest tests/test_something.py59 Nếu python -m unittest tests/test_something.py35 tồn tại thì khám phá không lặp lại trong gói, python -m unittest tests/test_something.py35 chịu trách nhiệm tải tất cả các bài kiểm tra trong gói Mẫu được cố tình không lưu trữ dưới dạng thuộc tính trình tải để các gói có thể tiếp tục tự khám phá. top_level_dir được lưu trữ nên python -m unittest tests/test_something.py35 không cần chuyển đối số này vào python -m unittest tests/test_something.py63 start_dir có thể là tên mô-đun chấm cũng như thư mục Mới trong phiên bản 3. 2 Đã thay đổi trong phiên bản 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. Đã thay đổi trong phiên bản 3. 4. start_dir có thể là một gói không gian tên . Đã thay đổi trong phiên bản 3. 4. Các đường dẫn được sắp xếp trước khi được nhập để thứ tự thực thi giống nhau ngay cả khi thứ tự của hệ thống tệp cơ bản không phụ thuộc vào tên tệp. Đã thay đổi trong phiên bản 3. 5. Các gói đã tìm thấy hiện được kiểm tra cho python -m unittest tests/test_something.py35 bất kể đường dẫn của chúng có khớp với mẫu hay không, bởi vì tên gói không thể khớp với mẫu mặc định. Đã thay đổi trong phiên bản 3. 11. start_dir không được là gói không gian tên . Nó đã bị hỏng kể từ 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. Giá trị mặc định là 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 ¶ Hàm được sử dụng để so sánh các tên phương thức khi sắp xếp chúng trong python -m unittest tests/test_something.py29 và tất cả các phương thức python -m unittest tests/test_something.py69suiteClass ¶ Đố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. Không cần phương thức trên đối tượng kết quả. Giá trị mặc định là lớp python -m unittest tests/test_something.py020 Điều này ảnh hưởng đến tất cả các phương pháp python -m unittest tests/test_something.py69testNamePatterns ¶ Danh sách các mẫu tên thử nghiệm ký tự đại diện kiểu hệ vỏ Unix mà các phương thức thử nghiệm phải khớp để được đưa vào bộ thử nghiệm (xem tùy chọn python -m unittest tests/test_something.py19) 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. Lưu ý rằng các kết quả khớp luôn được thực hiện bằng cách sử dụng python -m unittest tests/test_something.py55, do đó, không giống như các mẫu được truyền cho tùy chọn python -m unittest tests/test_something.py19, các mẫu chuỗi con đơn giản sẽ phải được chuyển đổi bằng ký tự đại diện python -m unittest tests/test_something.py54 Điều này ảnh hưởng đến tất cả các phương pháp python -m unittest tests/test_something.py69 Mới trong phiên bản 3. 7 lớp đơn vị kiểm tra. Kết quả kiểm tra ¶Lớp này được sử dụng để biên dịch thông tin về bài kiểm tra nào thành công và bài kiểm tra nào thất bại Một đối tượng python -m unittest tests/test_something.py037 lưu trữ kết quả của một tập hợp các bài kiểm tra. Các lớp python -m unittest -v test_module3 và python -m unittest tests/test_something.py020 đảm bảo rằng các kết quả được ghi lại đúng cách; 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; Phiên bản python -m unittest tests/test_something.py037 có các thuộc tính sau đây sẽ được quan tâm khi kiểm tra kết quả chạy một bộ thử nghiệmlỗi ¶ 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. Mỗi bộ đại diện cho một bài kiểm tra đưa ra một ngoại lệ không mong muốnlỗi ¶ 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. Mỗi bộ dữ liệu đại diện cho một thử nghiệm trong đó lỗi được báo hiệu rõ ràng bằng cách sử dụng các phương thức python -m unittest tests/test_something.py90đã bỏ qua ¶ Một danh sách chứa 2-bộ của các phiên bản python -m unittest -v test_module3 và các chuỗi chứa lý do bỏ qua bài kiểm tra 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. Mỗi bộ dữ liệu đại diện cho một lỗi hoặc lỗi dự kiến của trường hợp thử nghiệmthành công bất ngờ ¶ Danh sách chứa python -m unittest -v test_module3 trường hợp được đánh dấu là lỗi dự kiến, nhưng đã thành côngnê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 ¶ Tổng số bài kiểm tra chạy cho đến nay bộ đệm ¶Nếu được đặt thành true, python -m unittest tests/test_something.py96 và python -m unittest tests/test_something.py97 sẽ được lưu vào vùng đệm giữa python -m unittest tests/test_something.py98 và python -m unittest tests/test_something.py99 được gọi. Đầ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. Bất kỳ đầu ra nào cũng được đính kèm với thông báo lỗi / lỗi Mới trong phiên bản 3. 2 không thành công ¶Nếu được đặt thành true, python -m unittest tests/test_something.py95 sẽ được gọi trong lần lỗi hoặc lỗi đầu tiên, tạm dừng quá trình chạy thử Mới trong phiên bản 3. 2 tb_locals ¶Nếu được đặt thành true thì các biến cục bộ sẽ được hiển thị trong truy nguyên Mới trong phiên bản 3. 5 wasSuccessful() ¶Trả lại python -m unittest tests/test_something.py613 nếu tất cả các bài kiểm tra chạy cho đến nay đã vượt qua, nếu không thì trả về python -m unittest tests/test_something.py614 Đã thay đổi trong phiên bản 3. 4. Trả về python -m unittest tests/test_something.py614 nếu có bất kỳ python -m unittest -v test_module06 nào từ các bài kiểm tra được đánh dấu bằng trang trí python -m unittest tests/test_something.py043. dừng() ¶ Phương pháp này có thể được gọi để báo hiệu rằng bộ kiểm tra đang chạy phải bị hủy bỏ bằng cách đặt thuộc tính python -m unittest -v test_module08 thành 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 Ví dụ: tính năng này được lớp python -m unittest -v test_module11 sử dụng để dừng khung kiểm tra khi người dùng báo hiệu ngắt từ bàn phím. Các công cụ tương tác cung cấp triển khai python -m unittest tests/test_something.py21 có thể sử dụng điều này theo cách tương tự 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() ¶Được gọi một lần sau khi tất cả các bài kiểm tra được thực hiện 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 is a tuple of the form returned by 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)¶ Called when the test case test signals a failure. err is a tuple of the form returned by 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_module21 attribute, where formatted_err is a formatted traceback derived from erraddSuccess(test) ¶ Called when the test case test succeeds The default implementation does nothing addSkip(test , reason) ¶Called when the test case test is skipped. reason is the reason the test gave for skipping The default implementation appends a tuple python -m unittest -v test_module22 to the instance’s python -m unittest -v test_module23 attributeaddExpectedFailure(test , err) ¶ Called when the test case test fails or errors, but was marked with the python -m unittest tests/test_something.py043 decorator The default implementation appends a tuple python -m unittest -v test_module16 to the instance’s python -m unittest -v test_module26 attribute, where formatted_err is a formatted traceback derived from erraddUnexpectedSuccess(test) ¶ Called when the test case test was marked with the python -m unittest tests/test_something.py043 decorator, but succeeded The default implementation appends the test to the instance’s python -m unittest -v test_module06 attributeaddSubTest(test , subtest , outcome) ¶ Called when a subtest finishes. test is the test case corresponding to the test method. subtest is a custom python -m unittest -v test_module3 instance describing the subtest If outcome is python -m unittest tests/test_something.py52, the subtest succeeded. Otherwise, it failed with an exception where outcome is a tuple of the form returned by python -m unittest -v test_module14. python -m unittest -v test_module15 The default implementation does nothing when the outcome is a success, and records subtest failures as normal failures Mới trong phiên bản 3. 4 class unittest. TextTestResult(stream , descriptions , 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. unittest. defaultTestLoader ¶ Instance of the python -m unittest tests/test_something.py22 class intended to be shared. If no customization of the python -m unittest tests/test_something.py22 is needed, this instance can be used instead of repeatedly creating new instancesclass unittest. TextTestRunner(stream=None , descriptions=True , verbosity=1 , failfast=False , buffer=False , resultclass=None , warnings=None , * , tb_locals=False) ¶ Một triển khai trình chạy thử nghiệm cơ bản xuất kết quả thành luồng. 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ế. Việc triển khai như vậy phải chấp nhận python -m unittest -v test_module40 làm giao diện để xây dựng các trình chạy thay đổi khi các tính năng được thêm vào 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 . Các cảnh báo không dùng nữa do các phương pháp không dùng nữa gây ra cũng là trường hợp đặc biệt và khi các bộ lọc cảnh báo là python -m unittest -v test_module45 hoặc python -m unittest -v test_module46, chúng sẽ chỉ xuất hiện một lần cho mỗi mô-đun, . Hành vi này có thể bị ghi đè bằng cách sử dụng các tùy chọn python -m unittest -v test_module47 hoặc python -m unittest -v test_module48 của Python (xem Kiểm soát cảnh báo ) và để lại cảnh báo cho python -m unittest tests/test_something.py52. Đã thay đổi trong phiên bản 3. 2. Đã thêm đối số python -m unittest -v test_module50. Đã thay đổi trong phiên bản 3. 2. Luồng mặc định được đặt thành python -m unittest tests/test_something.py97 tại thời điểm khởi tạo thay vì thời điểm nhập. Đã thay đổi trong phiên bản 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. Nó không có ý định được gọi trực tiếp, nhưng có thể được ghi đè trong các lớp con để cung cấp một python -m unittest tests/test_something.py037 tùy chỉnh python -m unittest -v test_module55 khởi tạo lớp hoặc có thể gọi được truyền trong hàm tạo python -m unittest -v test_module11 dưới dạng đối số python -m unittest -v test_module57. Nó mặc định là python -m unittest tests/test_something.py630 nếu không cung cấp python -m unittest -v test_module57. Lớp kết quả được khởi tạo với các đối số sau python -m unittest tests/test_something.py68chạy(kiểm tra) ¶ Phương thức này là giao diện công khai chính của python -m unittest -v test_module11. Phương pháp này lấy phiên bản python -m unittest tests/test_something.py020 hoặc python -m unittest -v test_module3. Một python -m unittest tests/test_something.py037 được tạo bằng cách gọi python -m unittest -v test_module55 và (các) bài kiểm tra được chạy và kết quả được in ra thiết bị xuất chuẩnđơn vị nhất. 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; . Cách sử dụng đơn giản nhất cho hàm này là thêm dòng sau vào cuối tập lệnh kiểm tra 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 Đối số cảnh báo chỉ định bộ lọc cảnh báo sẽ được sử dụng trong khi chạy thử nghiệm. 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. Changed in version 3. 2. The verbosity, failfast, catchbreak, buffer and warnings parameters were added. Đã thay đổi trong phiên bản 3. 4. The defaultTest parameter was changed to also accept an iterable of test names. 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. It defaults to python -m unittest tests/test_something.py52 It should return a python -m unittest tests/test_something.py020 loader is the instance of python -m unittest tests/test_something.py22 doing the loading. standard_tests are the tests that would be loaded by default from the module. It is common for test modules to only want to add or remove tests from the standard set of tests. The third argument is used when loading packages as part of test discovery A typical python -m unittest tests/test_something.py35 function that loads tests from a specific set of python -m unittest -v test_module3 classes may look like python -m unittest tests/test_something.py3 If discovery is started in a directory containing a package, either from the command line or by calling python -m unittest -v test_module85, then the package python -m unittest -v test_module99 will be checked for python -m unittest tests/test_something.py35. If that function does not exist, discovery will recurse into the package as though it were just another directory. Otherwise, discovery of the package’s tests will be left up to python -m unittest tests/test_something.py35 which is called with the following arguments python -m unittest tests/test_something.py2 This should return a python -m unittest tests/test_something.py020 representing all the tests from the package. ( python -m unittest -v test_module95 will only contain tests collected from python -m unittest -v test_module99. ) Because the pattern is passed into python -m unittest tests/test_something.py35 the package is free to continue (and potentially modify) test discovery. A ‘do nothing’ python -m unittest tests/test_something.py35 function for a test package would look like python -m unittest tests/test_something.py5 Changed in version 3. 5. Discovery no longer checks package names for matching pattern due to the impossibility of package names matching the default pattern. Class and Module Fixtures¶Class and module level fixtures are implemented in python -m unittest tests/test_something.py020. When the test suite encounters a test from a new class then python -m unittest tests/test_something.py049 from the previous class (if there is one) is called, followed by python -m unittest tests/test_something.py048 from the new class Similarly if a test is from a different module from the previous test then python -m unittest tests/test_something.py102 from the previous module is run, followed by python -m unittest tests/test_something.py103 from the new module After all the tests have run the final python -m unittest tests/test_something.py070 and python -m unittest tests/test_something.py102 are run Note that shared fixtures do not play well with [potential] features like test parallelization and they break test isolation. They should be used with care The default ordering of tests created by the unittest test loaders is to group all tests from the same modules and classes together. This will lead to python -m unittest tests/test_something.py068 / python -m unittest tests/test_something.py103 (etc) being called exactly once per class and module. 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. A python -m unittest tests/test_something.py108 still exists for frameworks that don’t want to support shared fixtures If there are any exceptions raised during one of the shared fixture functions the test is reported as an error. Because there is no corresponding test instance an python -m unittest tests/test_something.py109 object (that has the same interface as a python -m unittest -v test_module3) is created to represent the error. If you are just using the standard unittest test runner then this detail doesn’t matter, but if you are a framework author it may be relevant setUpClass and tearDownClass¶These must be implemented as class methods 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. The implementations in python -m unittest -v test_module3 are empty If an exception is raised during a python -m unittest tests/test_something.py068 then the tests in the class are not run and the python -m unittest tests/test_something.py070 is not run. Skipped classes will not have python -m unittest tests/test_something.py068 or python -m unittest tests/test_something.py070 run. If the exception is a python -m unittest tests/test_something.py041 exception then the class will be reported as having been skipped instead of as an error setUpModule and tearDownModule¶These should be implemented as functions 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 To add cleanup code that must be run even in the case of an exception, use python -m unittest tests/test_something.py122unittest. addModuleCleanup(function , / , *args , **kwargs) ¶ Add a function to be called after python -m unittest tests/test_something.py051 to cleanup resources used during the test class. Functions will be called in reverse order to the order they are added (LIFO). They are called with any arguments and keyword arguments passed into python -m unittest tests/test_something.py124 when they are added If python -m unittest tests/test_something.py050 fails, meaning that python -m unittest tests/test_something.py051 is not called, then any cleanup functions added will still be called Mới trong phiên bản 3. 8 classmethod unittest. enterModuleContext(cm) ¶Enter the supplied context manager . If successful, also add its python -m unittest tests/test_something.py635 method as a cleanup function by python -m unittest tests/test_something.py124 and return the result of the python -m unittest tests/test_something.py637 method. Mới trong phiên bản 3. 11 unittest. 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ệ It is responsible for calling all the cleanup functions added by python -m unittest tests/test_something.py124. If you need cleanup functions to be called prior to python -m unittest tests/test_something.py051 then you can call python -m unittest tests/test_something.py135 yourself python -m unittest tests/test_something.py135 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 Signal Handling¶Mới trong phiên bản 3. 2 The python -m unittest tests/test_something.py137 command-line option to unittest, along with the python -m unittest tests/test_something.py138 parameter to python -m unittest tests/test_something.py18, provide more friendly handling of control-C during a test run. With catch break behavior enabled control-C will allow the currently running test to complete, and the test run will then end and report all the results so far. A second control-c will raise a python -m unittest tests/test_something.py53 in the usual way The control-c handling signal handler attempts to remain compatible with code or tests that install their own python -m unittest tests/test_something.py141 handler. If the python -m unittest tests/test_something.py9 handler is called but isn’t the installed python -m unittest tests/test_something.py141 handler, i. e. it has been replaced by the system under test and delegated to, then it calls the default handler. This will normally be the expected behavior by code that replaces an installed handler and delegates to it. For individual tests that need python -m unittest tests/test_something.py9 control-c handling disabled the python -m unittest tests/test_something.py145 decorator can be used There are a few utility functions for framework authors to enable control-c handling functionality within test frameworks đơn vị nhất. installHandler() ¶Install the control-c handler. When a python -m unittest tests/test_something.py141 is received (usually in response to the user pressing control-c) all registered results have python -m unittest tests/test_something.py95 calledunittest. registerResult(result) ¶ Register a python -m unittest tests/test_something.py037 object for control-c handling. Registering a result stores a weak reference to it, so it doesn’t prevent the result from being garbage collected Registering a python -m unittest tests/test_something.py037 object has no side-effects if control-c handling is not enabled, so test frameworks can unconditionally register all results they create independently of whether or not handling is enabledunittest. removeResult(result) ¶ Remove a registered result. Once a result has been removed then python -m unittest tests/test_something.py95 will no longer be called on that result object in response to a control-cunittest. removeHandler(function=None) ¶ When called without arguments this function removes the control-c handler if it has been installed. 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 |