Hướng dẫn python unit test for class - bài kiểm tra đơn vị python cho lớp
Mã nguồn: lib/unittest/__ init__.py Lib/unittest/__init__.py Show
(Nếu bạn đã quen thuộc với các khái niệm cơ bản của thử nghiệm, bạn có thể muốn bỏ qua danh sách các phương thức khẳng định.)the list of assert methods.) Khung thử nghiệm đơn vị python -m unittest tests/test_something.py7 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 máy để kiểm tra, tổng hợp các bài kiểm tra thành các bộ sưu tập và tính độc lập của các bài kiểm tra từ khung báo cáo. Để đạt được điều này, python -m unittest tests/test_something.py7 hỗ trợ một số khái niệm quan trọng theo cách hướng đối tượng:thử nghiệm cố định Một vật cố thử nghiệm thể hiện sự chuẩn bị cần thiết để thực hiện một hoặc nhiều bài kiểm tra và bất kỳ hành động dọn dẹp liên quan nào. Điều này có thể liên quan đến, ví dụ, tạo cơ sở dữ liệu, thư mục tạm thời hoặc proxy hoặc bắt đầu một quy trình máy chủ. Trường hợp kiểm traMộ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ể cho một tập hợp đầu vào cụ thể. python -m unittest tests/test_something.py7 cung cấp một lớp cơ sở, python -m unittest -v test_module0, có thể được sử dụng để tạo các trường hợp thử nghiệm mới. Bộ kiểm tra Một bộ thử nghiệm là một tập hợp các trường hợp thử nghiệm, bộ thử nghiệm 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ửNgười chạy thử là một thành phần phối hợp thực hiện các bài kiểm tra 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ề giá trị đặc biệt để chỉ ra kết quả thực hiện các thử nghiệm. Xem thêm Mô -đunpython -m unittest -v test_module1 Một mô-đun hỗ trợ thử nghiệm khác với một hương vị rất khác nhau. Thử nghiệm nhỏ đơn giản: Với các mẫuBài viết 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.py7.pytest Khung Unittest của bên thứ ba với cú pháp trọng lượng nhẹ hơn để viết bài kiểm tra. Ví dụ, python -m unittest -v test_module3.Các công cụ thử nghiệm Python phân loại Một danh sách rộng rãi các công cụ thử nghiệm Python bao gồm các khung thử nghiệm chức năng và thư viện đối tượng giả. Kiểm tra trong danh sách gửi thư PythonMột nhóm lợi ích đặc biệt để thảo luận về các công cụ thử nghiệm và thử nghiệm, trong Python. Tập lệnh python -m unittest -v test_module4 trong 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 được dự định phần lớn để dễ sử dụng cho những người mới để kiểm tra đơ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 Action hoặc AppVeyor. Ví dụ cơ bảnMô -đun python -m unittest tests/test_something.py7 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. Dưới đây là một tập lệnh 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 ra bằng cách phân lớp python -m unittest -v test_module6. Ba thử nghiệm 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 -v test_module7. Công ước đặt tên này thông báo cho người chạy thử nghiệm về phương pháp 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 đến python -m unittest -v test_module8 để kiểm tra kết quả dự kiến; python -m unittest -v test_module9 hoặc cd project_directory python -m unittest discover0 để xác minh một điều kiện; hoặc cd project_directory python -m unittest discover1 để xác minh rằng một ngoại lệ cụ thể được nâng lên. Các phương pháp này được sử dụng thay vì câu lệnh cd project_directory python -m unittest discover2 để người chạy thử có thể tích lũy tất cả các kết quả kiểm tra và tạo báo cáo. Các phương thức cd project_directory python -m unittest discover3 và cd project_directory python -m unittest discover4 cho phép bạn xác định các hướng dẫn 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.Organizing test code. Khối cuối cùng cho thấy một cách đơn giản để chạy các bài kiểm tra. cd project_directory python -m unittest discover5 cung cấp giao diện dòng lệnh cho tập lệnh kiểm tra. Khi chạy từ dòng lệnh, tập lệnh trên tạo ra một đầu ra trông như thế này: ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK Chuyển tùy chọn cd project_directory python -m unittest discover6 cho tập lệnh kiểm tra của bạn sẽ hướng dẫn cd project_directory python -m unittest discover5 để cho phép mức độ xác thực cao hơn và tạo ra đầu ra sau: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK Các ví dụ trên cho thấy các tính năng python -m unittest tests/test_something.py7 được sử dụng phổ biến nhất đủ để đáp ứng nhiều nhu cầu thử nghiệm hàng ngày. Phần còn lại của tài liệu khám phá toàn bộ tính năng được đặt từ các nguyên tắc đầu tiên. Đã thay đổi trong phiên bản 3.11: Hành vi trả về giá trị từ phương thức kiểm tra (trừ giá trị cd project_directory python -m unittest discover9 value), is now deprecated. Giao diện dòng lệnhMô -đun Unittest có thể được sử dụng từ dòng lệnh để chạy các thử nghiệm từ các mô -đun, lớp hoặc thậm chí các phương thức kiểm tra riêng lẻ: python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method Bạn có thể chuyển trong danh sách với bất kỳ kết hợp tên mô -đun và tên lớp hoặc phương thức đủ điều kiện. Các mô -đun kiểm tra 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 có thể nhập dưới dạng mô -đun. Đường dẫn được chuyển đổi thành một tên mô -đun bằng cách loại bỏ ‘.py, và chuyển đổi phân tách đường dẫn thành‘. Nếu bạn muốn thực thi một tệp kiểm tra không thể nhập như một mô -đun, bạn nên thực thi trực tiếp tệp. Bạn có thể chạy các bài kiểm tra với nhiều chi tiết hơn (độ merbosity cao hơn) bằng cách chuyển trong cờ -V: python -m unittest -v test_module Khi được thực hiện mà không bắt đầu khám phá kiểm tra đối số được bắt đầu:Test Discovery is started: Đối với danh sách tất cả các tùy chọn dòng lệnh: 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ẻ và không phải các mô -đun hoặc lớp.In earlier versions it was only possible to run individual test methods and not modules or classes. Tùy chọn dòng lệnh màUnittest hỗ trợ các tùy chọn dòng lệnh này: supports these command-line options: -B,-Buffer¶, --buffer¶Đầu ra tiêu chuẩn và các luồng lỗi tiêu chuẩn được đệm trong quá trình chạy thử. Đầu ra trong một bài kiểm tra đi qua bị loại bỏ. Đầu ra được lặp lại bình thường khi kiểm tra thất bại hoặc lỗi và được thêm vào các tin nhắn thất bại. -c,-bắt Năm,--catch¶Control-C trong quá trình chạy thử nghiệm chờ thử nghiệm hiện tại kết thúc và sau đó báo cáo tất cả các kết quả cho đến nay. Một điều khiển thứ hai-C làm tăng ngoại lệ python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"0 bình thường. Xem Xử lý tín hiệu cho các chức năng cung cấp chức năng này. -f,-failfast¶, --failfast¶Dừng kiểm tra chạy trên lỗi hoặc thất bại đầu tiên. -K¶¶Chỉ chạy các phương thức kiểm tra và các 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 được đưa vào. Các mẫu chứa ký tự ký tự đại diện ( python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"1) được khớp với tên thử nghiệm bằng cách sử dụng python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"2; Nếu không, kết hợp phụ nhạy cảm trường hợp đơn giản được sử dụng. Các mẫu được khớp với tên phương thức thử nghiệm đủ điều kiện được nhập bởi trình tải thử nghiệm. Ví dụ: python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"3 khớp với python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"4, python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"5, nhưng không phải python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"6. -Locals¶¶ Hiển thị các biến cục bộ trong Tracebacks. Mới trong phiên bản 3.2: Các tùy chọn dòng lệnh python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"7, python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"8 and python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"9 were added. Mới trong phiên bản 3.5: Tùy chọn dòng lệnh # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .0. Mới trong phiên bản 3.7: Tùy chọn dòng lệnh # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .1. 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ỉ là một tập hợp con. Thử nghiệm khám phá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à các mô-đun hoặc gói có thể nhập từ thư mục cấp cao nhất của dự án (điều này có nghĩa là tên tệp của chúng phải là định danh hợp lệ).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 # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .2, 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à: cd project_directory python -m unittest discover Ghi chú Như một lối tắt, # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .3 là tương đương với # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .4. Nếu bạn muốn vượt qua các đối số để kiểm tra khám phá, lệnh phụ # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .5 phải được sử dụng rõ ràng. Trình lệnh phụ # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .5 có các tùy chọn sau: -V,-Verbose¶,--verbose¶ Báo cáo dài dòng -S,-DirectoryDirectoryr của Start-DirectoryDirectory,--start-directory directory¶Thư mục để bắt đầu khám phá (mặc định # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .7) -P,-statesTpotyn¶,--pattern pattern¶ Mẫu để khớp các tệp kiểm tra (mặc định # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .8) -T,-cấp độ hàng đầu-định hướng,--top-level-directory directory¶ Thư mục cấp cao nhất của dự án (mặc định để bắt đầu thư mục) Các tùy chọn # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .9, import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50))0 và import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50))1 có thể được truyền trong các đối số vị trí theo thứ tự đó. Hai dòng lệnh sau đây tương đương: python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py" Cũng như là một đường dẫn, có thể chuyển tên gói, ví dụ import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50))2, 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 tin sẽ được sử dụng làm thư mục bắt đầu. Thận trọng Kiểm tra khám phá tải thử nghiệm bằng cách nhập chúng. Khi Test Discovery đã tìm thấy tất cả các tệp thử nghiệm từ thư mục bắt đầu, bạn chỉ định rằng nó biến các đường dẫn thành tên gói để nhập. Ví dụ import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50))3 sẽ được nhập dưới dạng import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50))4. Nếu bạn có một gói được cài đặt trên toàn cầu và thử khám phá thử nghiệm trên một bản sao khác của gói thì việc nhập có thể xảy ra từ nơi sai. Nếu điều này xảy ra khám phá kiểm tra 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 chứ không phải là đường dẫn đến thư mục thì hãy khám phá giả định rằng bất kỳ vị trí nào nó nhập từ 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 kiểm tra có thể tùy chỉnh tải và khám phá thử nghiệm bằng cách thông qua giao thức load_tests. Đã thay đổi trong phiên bản 3.4: Thử nghiệm khám phá hỗ trợ các 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 (ví dụ: import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50))5). Đã thay đổi trong phiên bản 3.11: Python 3.11 đã bỏ các gói không gian tên hỗ trợ. Nó đã bị phá vỡ kể từ Python 3.7. Bắt đầu thư mục và thư mục con chứa các thử nghiệm phải là gói thông thường có tệp import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50))6 file. Các thư mục 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 dưới dạng tên gói chấm và thư mục đích một cách rõ ràng. Ví dụ: # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t . Tổ chức mã kiểm traCá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 phải được thiết lập và kiểm tra tính đúng đắn. Trong python -m unittest tests/test_something.py7, các trường hợp thử nghiệm được biểu thị bằng các trường hợp python -m unittest -v test_module6. Để thực hiện các trường hợp kiểm tra của riêng bạn, bạn phải viết các lớp con là python -m unittest -v test_module0 hoặc sử dụng ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK00. Mã thử nghiệm của một trường hợp python -m unittest -v test_module0 phải hoàn toàn khép kín, sao cho nó có thể được chạy trong sự 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_module0 đơn giản nhất sẽ chỉ cần thực hiện một phương thức kiểm tra (nghĩa là một phương thức có tên bắt đầu bằng python -m unittest -v test_module7) để thực hiện mã kiểm tra cụ thể: import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50)) 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 thức ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK04 được cung cấp bởi lớp cơ sở python -m unittest -v test_module0. Nếu thử nghiệm thất bại, một ngoại lệ sẽ được nêu ra với một thông điệp giải thích và python -m unittest tests/test_something.py7 sẽ xác định trường hợp thử nghiệm là một lỗi. Bất kỳ trường hợp ngoại lệ khác sẽ được coi là lỗi. Các bài kiểm tra 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ể đưa ra mã thiết lập bằng cách triển khai một phương thức gọi là cd project_directory python -m unittest discover3, mà khung thử nghiệm sẽ tự động gọi cho mỗi thử nghiệm chúng tôi chạy: ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK0 Ghi chú Thứ tự mà các thử nghiệm khác nhau sẽ được chạy được xác định bằng cách sắp xếp các tên phương thức kiểm tra liên quan đến thứ tự tích hợp cho các chuỗi. Nếu phương thức cd project_directory python -m unittest discover3 tăng một ngoại lệ trong khi thử nghiệm đang chạy, khung sẽ xem xét thử nghiệm đã bị lỗi và phương pháp kiểm tra sẽ không được thực thi. Tương tự, chúng tôi có thể cung cấp một phương thức cd project_directory python -m unittest discover4 phù hợp sau khi phương thức kiểm tra đã được chạy: ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK1 Nếu cd project_directory python -m unittest discover3 thành công, cd project_directory python -m unittest discover4 sẽ được chạy cho dù phương pháp kiểm tra có thành công hay không. Một môi trường làm việc như vậy cho mã thử nghiệm được gọi là vật cố thử nghiệm. Một phiên bản TestCase mới được tạo như một vật cố thử nghiệm duy nhất được sử dụng để thực hiện từng phương pháp thử nghiệm riêng lẻ. Do đó, cd project_directory python -m unittest discover3, cd project_directory python -m unittest discover4 và ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK14 sẽ được gọi một lần mỗi lần thử nghiệm. Bạn nên sử dụng các triển khai TestCase để các thử nghiệm nhóm cùng nhau theo các tính năng mà họ kiểm tra. python -m unittest tests/test_something.py7 cung cấp một cơ chế cho điều này: Bộ thử nghiệm, được đại diện bởi lớp ____ 47 ____ ____117. Trong hầu hết các trường hợp, gọi cd project_directory python -m unittest discover5 sẽ làm điều đúng đắn và thu thập tất cả các trường hợp thử nghiệm 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 đó: ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK2 Bạn có thể đặt các định nghĩa về các trường hợp thử nghiệm và bộ thử nghiệm trong cùng một mô -đun với mã chúng sẽ kiểm tra (chẳng hạn như ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK19), nhưng có một số lợi thế để đặt mã kiểm tra trong một mô -đun riêng, chẳng hạn như ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK20:
Tái sử dụng mã kiểm tra cũMột số người dùng sẽ thấy rằng họ có mã kiểm tra hiện tại mà họ muốn chạy từ python -m unittest tests/test_something.py7, mà không chuyển đổi mọi chức năng kiểm tra cũ thành lớp con python -m unittest -v test_module0. Vì lý do này, python -m unittest tests/test_something.py7 cung cấp một lớp ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK00. Lớp con này của python -m unittest -v test_module0 có thể được sử dụng để bọc một chức năng kiểm tra hiện có. Các chức năng thiết lập và xé nát cũng có thể được cung cấp. Cho chức năng kiểm tra sau: ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK3 Người ta có thể tạo một trường hợp kiểm tra tương đương như sau, với các phương thức thiết lập và phá vỡ tùy chọn: ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK4 Ghi chú Thứ tự mà các thử nghiệm khác nhau sẽ được chạy được xác định bằng cách sắp xếp các tên phương thức kiểm tra liên quan đến thứ tự tích hợp cho các chuỗi. Nếu phương thức cd project_directory python -m unittest discover3 tăng một ngoại lệ trong khi thử nghiệm đang chạy, khung sẽ xem xét thử nghiệm đã bị lỗi và phương pháp kiểm tra sẽ không được thực thi. Tương tự, chúng tôi có thể cung cấp một phương thức cd project_directory python -m unittest discover 4 phù hợp sau khi phương thức kiểm tra đã được chạy:Nếu Một môi trường làm việc như vậy cho mã thử nghiệm được gọi là vật cố thử nghiệm. Một phiên bản TestCase mới được tạo như một vật cố thử nghiệm duy nhất được sử dụng để thực hiện từng phương pháp thử nghiệm riêng lẻ. Do đó, cd project_directory python -m unittest discover3, cd project_directory python -m unittest discover4 và ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK14 sẽ được gọi một lần mỗi lần thử nghiệm. Bạn nên sử dụng các triển khai TestCase để các thử nghiệm nhóm cùng nhau theo các tính năng mà họ kiểm tra. python -m unittest tests/test_something.py7 cung cấp một cơ chế cho điều này: Bộ thử nghiệm, được đại diện bởi lớp ____ 47 ____ ____117. Trong hầu hết các trường hợp, gọi cd project_directory python -m unittest discover5 sẽ làm điều đúng đắn và thu thập tất cả các trường hợp thử nghiệm mô -đun cho bạn và thực hiện chúng.decorator or one of its conditional variants, calling ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK36 within a cd project_directory python -m unittest discover3 or test method, or raising ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK38 directly. 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 đó: ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK5 Bạn có thể đặt các định nghĩa về các trường hợp thử nghiệm và bộ thử nghiệm trong cùng một mô -đun với mã chúng sẽ kiểm tra (chẳng hạn như ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK19), nhưng có một số lợi thế để đặt mã kiểm tra trong một mô -đun riêng, chẳng hạn như ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK20: ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK6 Mô -đun thử nghiệm có thể được chạy độc lập từ dòng lệnh. ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK7 ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK39 cũng có thể bỏ qua bài kiểm tra. Điều này rất hữu ích khi một tài nguyên cần được thiết lập không có sẵn. Thất bại dự kiến sử dụng công cụ trang trí ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK40. ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK8 Nó rất dễ dàng để cuộn các nhà trang trí bỏ qua của riêng bạn bằng cách thực hiện một người trang trí gọi ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK35 trong bài kiểm tra khi nó muốn nó bị bỏ qua. Người trang trí này bỏ qua bài kiểm tra trừ khi đối tượng được truyền có một thuộc tính nhất định: ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK9 Các nhà trang trí sau đây và ngoại lệ thực hiện bỏ qua thử nghiệm và thất bại dự kiến: @unittest.skip (lý do) ¶unittest.skip(reason)¶Bỏ qua vô điều kiện các bài kiểm tra trang trí. Lý do nên mô tả lý do tại sao bài kiểm tra đang bị bỏ qua. @unittest.skipif (điều kiện, lý do) ¶unittest.skipIf(condition, reason)¶Bỏ qua bài kiểm tra trang trí nếu điều kiện là đúng. @unittest.skipunless (điều kiện, lý do) ¶unittest.skipUnless(condition, reason)¶Bỏ qua bài kiểm tra trang trí trừ khi điều kiện là đúng. @unittest.expectedfailure¶unittest.expectedFailure¶Đánh dấu bài kiểm tra là một lỗi hoặc lỗi dự kiến. Nếu thử nghiệm không thành công hoặc lỗi trong chính chức năng thử nghiệm (thay vì trong một trong các phương thức cố định thử nghiệm) thì nó sẽ được coi là thành công. Nếu bài kiểm tra vượt qua, nó sẽ được coi là một thất bại. ExceptionUnItest.skiptest (lý do) ¶unittest.SkipTest(reason)¶Ngoại lệ này được nâng lên để bỏ qua một bài kiểm tra. Thông thường bạn có thể sử dụng ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK36 hoặc một trong những người trang trí bỏ qua thay vì nâng này trực tiếp. Các bài kiểm tra bỏ qua sẽ không có cd project_directory python -m unittest discover3 hoặc cd project_directory python -m unittest discover4 chạy xung quanh chúng. Các lớp bị bỏ qua sẽ không có ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK45 hoặc ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK46 chạy. Các mô -đun bỏ qua sẽ không có ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK47 hoặc ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK48 chạy. Phân biệt các lần lặp kiểm tra bằng cách sử dụng các bài kiểm traMới trong phiên bản 3.4. Khi có sự khác biệt rất nhỏ giữa các bài kiểm tra của bạn, ví dụ, 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ý bối cảnh ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK49. Ví dụ: bài kiểm tra sau: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK0 sẽ tạo ra đầu ra sau: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK1 Nếu không sử dụng phép trừ, việc thực thi sẽ dừng sau lần thất bại đầu tiên và lỗi sẽ ít dễ chẩn đoán hơn vì giá trị của ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK50 sẽ được hiển thị: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK2 Các lớp học và chức năngPhần này mô tả độ sâu API của python -m unittest tests/test_something.py7. Các trường hợp kiểm tra Joclassunittest.testcase (methodname = 'runtest') ¶ unittest.TestCase(methodName='runTest')¶Các trường hợp của lớp python -m unittest -v test_module0 đại diện cho các đơn vị kiểm tra logic trong vũ trụ python -m unittest tests/test_something.py7. Lớp này được 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 bê tông. Lớp này thực hiện giao diện cần thiết cho người chạy thử để cho phép nó điều khiển các thử nghiệm 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_module0 sẽ chạy một phương thức cơ sở duy nhất: phương thức có tên phương thức. Trong hầu hết các cách sử dụng của python -m unittest -v test_module0, bạn sẽ không thay đổi tên phương thức cũng như tái tạo phương thức ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK56 mặc định. Thay đổi trong phiên bản 3.2: python -m unittest -v test_module0 can be instantiated successfully without providing a methodName. This makes it easier to experiment with python -m unittest -v test_module0 from the interactive interpreter. python -m unittest -v test_module0 Các trường hợp 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 sử dụng bởi việc thực hiện thử nghiệm để kiểm tra các điều kiện và báo cáo thất bại và một số phương pháp điều tra cho phép thông tin về bài kiểm tra được thu thập. Các phương thức trong nhóm đầu tiên (chạy thử nghiệm) là: thành lập()¶()¶Phương pháp được gọi để chuẩn bị vật cố thử nghiệm. Điều này được gọi ngay lập tức trước khi gọi phương thức kiểm tra; Khác với ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK60 hoặc ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK38, bất kỳ ngoại lệ nào được đưa ra bởi phương pháp này sẽ được coi là một lỗi thay vì lỗi thử nghiệm. Việc thực hiện mặc định không có gì. phá bỏ()¶()¶ Phương thức được gọi ngay sau khi phương pháp thử nghiệm đã được gọi và kết quả được ghi lại. Điều này được gọi ngay cả khi phương pháp kiểm tra nêu ra một ngoại lệ, vì vậy việc triển khai trong các lớp con có thể cần đặc biệt cẩn thận về việc kiểm tra trạng thái nội bộ. Bất kỳ ngoại lệ nào, ngoài ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK60 hoặc ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK38, được đưa ra bởi phương pháp này sẽ được coi là một lỗi bổ sung thay vì lỗi kiểm tra (do đó làm tăng tổng số lỗi được báo cáo). Phương pháp này sẽ chỉ được gọi nếu cd project_directory python -m unittest discover3 thành công, bất kể kết quả của phương pháp thử nghiệm. Việc thực hiện mặc định không có gì. Lớp thiết lập () ¶()¶ Một phương thức lớp được gọi trước khi kiểm tra trong một lớp riêng lẻ được chạy. ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK65 được gọi với lớp là đối số duy nhất và phải được trang trí là ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK66: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK3 Xem đồ đạc lớp và mô -đun để biết thêm chi tiết. Mới trong phiên bản 3.2. Lớp học rehown () ¶()¶Một phương pháp lớp được gọi sau khi kiểm tra trong một lớp riêng lẻ đã chạy. ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK67 được gọi với lớp là đối số duy nhất và phải được trang trí là ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK66: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK4 Xem đồ đạc lớp và mô -đun để biết thêm chi tiết. Mới trong phiên bản 3.2. chạy (result = none) ¶(result=None)¶Chạy thử nghiệm, thu thập kết quả vào đối tượng ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK34 được truyền qua kết quả. Nếu kết quả bị bỏ qua hoặc cd project_directory python -m unittest discover9, 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 ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK71) và được sử dụng. Đối tượng kết quả được trả lại cho người gọi ____ ____ 172. Hiệu ứng tương tự có thể có bằng cách gọi đơn giản là phiên bản python -m unittest -v test_module0. Đã thay đổi trong phiên bản 3.3: Các phiên bản trước của ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK74 did not return the result. Neither did calling an instance. Skiptest (lý do) ¶(reason)¶ Gọi điều này trong một phương pháp kiểm tra hoặc cd project_directory python -m unittest discover3 bỏ qua bài kiểm tra hiện tại. Xem các bài kiểm tra bỏ qua và thất bại dự kiến để biết thêm thông tin.Skipping tests and expected failures for more information. Mới trong phiên bản 3.1. Subtest (msg = none, ** params) ¶(msg=None, **params)¶Trả về Trình quản lý ngữ cảnh thực thi khối mã kèm theo dưới dạng phép trừ. MSG và params là các giá trị tùy chọn, tùy ý được hiển thị bất cứ khi nào một sự kiện trừ, cho phép bạn xác định chúng rõ ràng. Một trường hợp thử nghiệm có thể chứa bất kỳ số lượng khai báo phụ nhất và chúng có thể được lồng tùy ý. Xem các lần lặp kiểm tra phân biệt bằng cách sử dụng các bài kiểm tra để biết thêm thông tin.Distinguishing test iterations using subtests for more information. Mới trong phiên bản 3.4. gỡ lỗi ()()¶Chạy bài kiểm tra mà không thu thập kết quả. Điều này cho phép các ngoại lệ được đưa ra bởi bài kiểm tra được truyền đến người gọi và có thể được sử dụng để hỗ trợ các thử nghiệm chạy theo trình gỡ lỗi. Lớp python -m unittest -v test_module0 cung cấp một số phương pháp khẳng định để kiểm tra và báo cáo thất bại. Bảng sau liệt kê các phương thức đượ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 thức khẳng định):
Tất cả các phương thức khẳng định chấp nhận một đối số MSG rằng, nếu được chỉ định, được sử dụng làm thông báo lỗi về lỗi (xem thêm test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK01). Lưu ý rằng đối số từ khóa MSG có thể được chuyển đến cd project_directory python -m unittest discover1, test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK03, test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK04, test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK05 chỉ khi chúng được sử dụng làm trình quản lý ngữ cảnh. assertequal (thứ nhất, thứ hai, msg = none) ¶(first, second, msg=None)¶ Kiểm tra rằng thứ nhất và thứ hai là bằng nhau. 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 loại chính xác và một danh sách, tuple, dict, set, frozenset hoặc str hoặc bất kỳ loại nào mà một lớp con đăng ký với test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK06 Hàm bình đẳng cụ thể loại sẽ được gọi để tạo ra Thông báo lỗi mặc định hữu ích (xem thêm danh sách các phương thức cụ thể loại).list of type-specific methods). Đã thay đổi trong phiên bản 3.1: Đã thêm cuộc gọi tự động của hàm bình đẳng cụ thể.Added the automatic calling of type-specific equality function. Đã thay đổi trong phiên bản 3.2: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK07 added as the default type equality function for comparing strings. assertNotequal (thứ nhất, thứ hai, msg = none) ¶(first, second, msg=None)¶ Kiểm tra rằng thứ nhất và thứ hai không bằng nhau. Nếu các giá trị so sánh bằng nhau, bài kiểm tra sẽ thất bại. assertTrue (expr, msg = none) ¶ assertFalse (expr, msg = none) ¶(expr, msg=None)¶ assertFalse(expr, msg=None)¶Kiểm tra rằng expr là đúng (hoặc sai). Lưu ý rằng điều này tương đương với test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK08 và không với test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK09 (sử dụng test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK10 cho cái 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 (ví dụ: ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK77 thay vì test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK12), vì chúng cung cấp thông báo lỗi tốt hơn trong trường hợp thất bại. Assertis (thứ nhất, thứ hai, msg = none) ¶ AssertisNot (thứ nhất, thứ hai, msg = none)(first, second, msg=None)¶ assertIsNot(first, second, msg=None)¶ Kiểm tra rằng thứ nhất và thứ hai là (hoặc không) cùng một đối tượng. Mới trong phiên bản 3.1. Subtest (msg = none, ** params) ¶(expr, msg=None)¶ assertIsNotNone(expr, msg=None)¶Trả về Trình quản lý ngữ cảnh thực thi khối mã kèm theo dưới dạng phép trừ. MSG và params là các giá trị tùy chọn, tùy ý được hiển thị bất cứ khi nào một sự kiện trừ, cho phép bạn xác định chúng rõ ràng. Mới trong phiên bản 3.1. Subtest (msg = none, ** params) ¶(member, container, msg=None)¶ assertNotIn(member, container, msg=None)¶Trả về Trình quản lý ngữ cảnh thực thi khối mã kèm theo dưới dạng phép trừ. MSG và params là các giá trị tùy chọn, tùy ý được hiển thị bất cứ khi nào một sự kiện trừ, cho phép bạn xác định chúng rõ ràng. Mới trong phiên bản 3.1. Subtest (msg = none, ** params) ¶(obj, cls, msg=None)¶ assertNotIsInstance(obj, cls, msg=None)¶Trả về Trình quản lý ngữ cảnh thực thi khối mã kèm theo dưới dạng phép trừ. MSG và params là các giá trị tùy chọn, tùy ý được hiển thị bất cứ khi nào một sự kiện trừ, cho phép bạn xác định chúng rõ ràng. Mới trong phiên bản 3.2. Một trường hợp thử nghiệm có thể chứa bất kỳ số lượng khai báo phụ nhất và chúng có thể được lồng tùy ý.
assertTrue (expr, msg = none) ¶ assertFalse (expr, msg = none) ¶ Nếu chỉ có ngoại lệ và có thể được đưa ra các đối số MSG, hãy trả về Trình quản lý ngữ cảnh để mã được kiểm tra có thể được ghi nội tuyến thay vì là một hàm: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK5 Khi được sử dụng làm trình quản lý ngữ cảnh, cd project_directory python -m unittest discover1 chấp nhận tin nhắn 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ị bắt trong thuộc tính test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK30 của nó. Điều này có thể hữu ích nếu ý định là thực hiện kiểm tra bổ sung về ngoại lệ được nêu ra: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK6 Đã thay đổi trong phiên bản 3.1: Đã thêm khả năng sử dụng cd project_directory python -m unittest discover1 as a context manager. Đã thay đổi trong phiên bản 3.2: Đã thêm thuộc tính test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK30 attribute. Đã 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.Added the msg keyword argument when used as a context manager. AssertraiseSregex (ngoại lệ, regex, có thể gọi được, *args, ** kwds)(exception, regex, callable, *args, **kwds)¶ assertRaisesRegex(exception, regex, *, msg=None)Giống như cd project_directory python -m unittest discover1 nhưng cũng kiểm tra rằng Regex khớp với biểu diễn chuỗi của ngoại lệ được nâng lê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 một biểu thức thông thường phù hợp để sử dụng bởi test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK34. Ví dụ: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK7 or: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK8 Mới trong phiên bản 3.1: Được thêm vào dưới tên test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK35. Đã 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.Added the msg keyword argument when used as a context manager. AssertraiseSregex (ngoại lệ, regex, có thể gọi được, *args, ** kwds)(warning, callable, *args, **kwds)¶ assertWarns(warning, *, msg=None)Giống như cd project_directory python -m unittest discover1 nhưng cũng kiểm tra rằng Regex khớp với biểu diễn chuỗi của ngoại lệ được nâng lê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 một biểu thức thông thường phù hợp để sử dụng bởi test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK34. Ví dụ: Mới trong phiên bản 3.1: Được thêm vào dưới tên test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK35. test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK9 AssertWarns (cảnh báo, có thể gọi được, *args, ** kwds) ¶ AssertWarns (cảnh báo, *, msg = none) Kiểm tra rằng một cảnh báo được kích hoạt khi có thể gọi được được gọi với bất kỳ đối số vị trí hoặc từ khóa nào cũng được truyền đến test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK04. Bài kiểm tra vượt qua nếu cảnh báo được kích hoạt và thất bại nếu nó không phải là. Bất kỳ ngoại lệ là một lỗi. Để bắt bất kỳ nhóm cảnh báo nào, một tuple chứa các lớp cảnh báo có thể được thông qua dưới dạng cảnh báo. python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method0 Nếu chỉ có cảnh báo và có thể đưa ra các đối số MSG, hãy trả về Trình quản lý ngữ cảnh để mã được kiểm tra có thể được ghi nội tuyến chứ không phải là một hàm: Khi được sử dụng làm trình quản lý ngữ cảnh, Đã 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.Added the msg keyword argument when used as a context manager. AssertraiseSregex (ngoại lệ, regex, có thể gọi được, *args, ** kwds)(warning, regex, callable, *args, **kwds)¶ assertWarnsRegex(warning, regex, *, msg=None)Giống như cd project_directory python -m unittest discover1 nhưng cũng kiểm tra rằng Regex khớp với biểu diễn chuỗi của ngoại lệ được nâng lê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 một biểu thức thông thường phù hợp để sử dụng bởi test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK34. Ví dụ: python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method1 or: python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method2 Khi được sử dụng làm trình quản lý ngữ cảnh, Đã 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.Added the msg keyword argument when used as a context manager. AssertraiseSregex (ngoại lệ, regex, có thể gọi được, *args, ** kwds)(logger=None, level=None)¶Giống như cd project_directory python -m unittest discover1 nhưng cũng kiểm tra rằng Regex khớp với biểu diễn chuỗi của ngoại lệ được nâng lê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 một biểu thức thông thường phù hợp để sử dụng bởi test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK34. Ví dụ: Mới trong phiên bản 3.1: Được thêm vào dưới tên test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK35. AssertWarns (cảnh báo, có thể gọi được, *args, ** kwds) ¶ AssertWarns (cảnh báo, *, msg = none) Kiểm tra rằng một cảnh báo được kích hoạt khi có thể gọi được được gọi với bất kỳ đối số vị trí hoặc từ khóa nào cũng được truyền đến test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK04. Bài kiểm tra vượt qua nếu cảnh báo được kích hoạt và thất bại nếu nó không phải là. Bất kỳ ngoại lệ là một lỗi. Để bắt bất kỳ nhóm cảnh báo nào, một tuple chứa các lớp cảnh báo có thể được thông qua dưới dạng cảnh báo. Nếu chỉ có cảnh báo và có thể đưa ra các đối số MSG, hãy trả về Trình quản lý ngữ cảnh để mã được kiểm tra có thể được ghi nội tuyến chứ không phải là một hàm: Khi được sử dụng làm trình quản lý ngữ cảnh,test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK04 chấp nhận thông tin 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 test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK38 và dòng nguồn đã kích hoạt các cảnh báo trong các thuộc tính test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK39 và test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK40. Điều này có thể hữu ích nếu ý định là thực hiện kiểm tra bổ sung về cảnh báo bị bắt: 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. Example: python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method3 AssertWarnsRegex (Cảnh báo, Regex, Callable, *Args, ** KWDS) Giống nhưtest_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK04 nhưng cũng kiểm tra rằng Regex phù hợp với thông điệp 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 một biểu thức thông thường phù hợp để sử dụng bởi test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK34. Thí dụ:(logger=None, level=None)¶ AssertLogs (logger = none, level = none) ¶ Trình quản lý bối cảnh để kiểm tra rằng ít nhất một tin nhắn được ghi vào logger hoặc một trong những đứa trẻ của nó, với ít nhất là mức đã cho. AssertWarns (cảnh báo, có thể gọi được, *args, ** kwds) ¶ AssertWarns (cảnh báo, *, msg = none) Kiểm tra rằng một cảnh báo được kích hoạt khi có thể gọi được được gọi với bất kỳ đối số vị trí hoặc từ khóa nào cũng được truyền đến test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK04. Bài kiểm tra vượt qua nếu cảnh báo được kích hoạt và thất bại nếu nó không phải là. Bất kỳ ngoại lệ là một lỗi. Để bắt bất kỳ nhóm cảnh báo nào, một tuple chứa các lớp cảnh báo có thể được thông qua dưới dạng cảnh báo. Nếu chỉ có cảnh báo và có thể đưa ra các đối số MSG, hãy trả về Trình quản lý ngữ cảnh để mã được kiểm tra có thể được ghi nội tuyến chứ không phải là một hàm: Khi được sử dụng làm trình quản lý ngữ cảnh, test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK04 chấp nhận thông tin từ khóa bổ sung.
Kiểm tra rằng thứ nhất và thứ hai là xấp xỉ (hoặc không xấp xỉ) bằng cách tính toán sự khác biệt, làm tròn đến số vị trí thập phân đã cho (mặc định 7) và so sánh với 0. Lưu ý rằng các phương thức này làm tròn các giá trị vào số lượng số thập phân đã cho (nghĩa là như hàm test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK74) và không phải là các chữ số đáng kể. Nếu Delta được cung cấp thay vì các địa điểm thì sự khác biệt 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 làm tăng test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK75. Đã thay đổi trong phiên bản 3.2: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK76 automatically considers almost equal objects that compare equal. test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK77 automatically fails if the objects compare equal. Added the delta keyword argument. AssertGreater (thứ nhất, thứ hai, msg = none)(first, second, msg=None)¶ assertGreaterEqual(first, second, msg=None)¶ assertLess(first, second, msg=None)¶ assertLessEqual(first, second, msg=None)¶ Kiểm tra lần đầu tiên là tương ứng>,> =, Mới trong phiên bản 3.1. assertregex (văn bản, regex, msg = none)(text, regex, msg=None)¶ assertNotRegex(text, regex, msg=None)¶Kiểm tra rằng một tìm kiếm regex phù hợp với văn bản (hoặc không khớp). Trong trường hợp thất bại, thông báo lỗi sẽ bao gồm mẫu và văn bản (hoặc mẫu và một phần của văn bản không ngờ tới). Regex có thể là một đối tượng biểu thức chính quy hoặc một chuỗi chứa một biểu thức thông thường phù hợp để sử dụng bởi test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK34. Mới trong phiên bản 3.1: Được thêm vào dưới tên test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK79. Thay đổi trong phiên bản 3.2: Phương pháp test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK80 has been renamed to test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK81. Mới trong phiên bản 3.5: Tên test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK82 is a deprecated alias for test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK83. assertCountequal (thứ nhất, thứ hai, msg = none) ¶(first, second, msg=None)¶ Kiểm tra trình tự đầu tiên chứa các yếu tố giống như thứ hai, bất kể thứ tự của chúng. Khi họ don, một thông báo lỗi liệt kê sự khác biệt giữa các chuỗi sẽ được tạo ra. 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ố lượng trong cả hai chuỗi hay không. Tương đương với: test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK84 nhưng cũng hoạt động với các chuỗi các đối tượng không thể chối cãi. Mới trong phiên bản 3.2. Phương pháp python -m unittest -v test_module8 gửi kiểm tra bình đẳng cho các đối tượng cùng loại cho các phương thức cụ thể loại khác nhau. Các phương pháp này đã được triển khai cho hầu hết các loại tích hợp, nhưng nó cũng có thể đăng ký các phương thức mới bằng cách sử dụng test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK06: AddTyPeequalityFunc (typeObj, function) ¶(typeobj, function)¶ Đăng ký một phương thức cụ thể loại được gọi bởi python -m unittest -v test_module8 để kiểm tra xem hai đối tượng có cùng loại cùng loại (không phải các lớp con) so sánh bằng nhau không. Hàm phải lấy hai đối số vị trí và MSG thứ ba = không có đối số từ khóa giống như python -m unittest -v test_module8. Nó phải tăng test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK89 khi sự bất bình đẳng giữa hai tham số đầu tiên được phát hiện - có thể cung cấp thông tin hữu ích và giải thích sự bất bình đẳng chi tiết trong thông báo lỗi. Mới trong phiên bản 3.1. assertregex (văn bản, regex, msg = none)
Đăng ký một phương thức cụ thể loại được gọi bởi python -m unittest -v test_module8 để kiểm tra xem hai đối tượng có cùng loại cùng loại (không phải các lớp con) so sánh bằng nhau không. Hàm phải lấy hai đối số vị trí và MSG thứ ba = không có đối số từ khóa giống như python -m unittest -v test_module8. Nó phải tăng test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK89 khi sự bất bình đẳng giữa hai tham số đầu tiên được phát hiện - có thể cung cấp thông tin hữu ích và giải thích sự bất bình đẳng chi tiết trong thông báo lỗi. Mới trong phiên bản 3.1. assertregex (văn bản, regex, msg = none)(first, second, msg=None, seq_type=None)¶Kiểm tra rằng một tìm kiếm regex phù hợp với văn bản (hoặc không khớp). Trong trường hợp thất bại, thông báo lỗi sẽ bao gồm mẫu và văn bản (hoặc mẫu và một phần của văn bản không ngờ tới). Regex có thể là một đối tượng biểu thức chính quy hoặc một chuỗi chứa một biểu thức thông thường phù hợp để sử dụng bởi test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK34. Mới trong phiên bản 3.1: Được thêm vào dưới tên test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK79. Mới trong phiên bản 3.1. assertregex (văn bản, regex, msg = none)(first, second, msg=None)¶ assertTupleEqual(first, second, msg=None)¶Kiểm tra rằng một tìm kiếm regex phù hợp với văn bản (hoặc không khớp). Trong trường hợp thất bại, thông báo lỗi sẽ bao gồm mẫu và văn bản (hoặc mẫu và một phần của văn bản không ngờ tới). Regex có thể là một đối tượng biểu thức chính quy hoặc một chuỗi chứa một biểu thức thông thường phù hợp để sử dụng bởi test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK34. Mới trong phiên bản 3.1. AssertSetequal (thứ nhất, thứ hai, msg = none) ¶(first, second, msg=None)¶Các thử nghiệm rằng hai bộ là bằng nhau. Nếu không, một thông báo lỗi được xây dựng 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 đông lạnh với python -m unittest -v test_module8. Thất bại nếu một trong hai hoặc thứ hai không có phương thức python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method03. Mới trong phiên bản 3.1. assertDictequal (thứ nhất, thứ hai, msg = none) ¶(first, second, msg=None)¶Kiểm tra rằng hai từ điển là bằng nhau. Nếu không, một thông báo lỗi được xây dựng 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 đến python -m unittest -v test_module8. Mới trong phiên bản 3.1. Cuối cùng, python -m unittest -v test_module0 cung cấp các phương thức và thuộc tính sau: FAIL (MSG = KHÔNG) ¶(msg=None)¶ Báo hiệu lỗi kiểm tra vô điều kiện, với MSG hoặc cd project_directory python -m unittest discover9 cho thông báo lỗi. Thất bại¶ Thuộc tính lớp này đưa ra ngoại lệ được nâng lên 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 dụng, có thể mang thêm thông tin, nó phải phân lớp ngoại lệ này để chơi trò chơi công bằng với khung. Giá trị ban đầu của thuộc tính này là ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK60. Longmessage¶¶ Thuộc tính lớp này xác định những gì xảy ra khi một thông báo thất bại tùy chỉnh được truyền khi đối số MSG cho một cuộc gọi Assertxyy không thành công. python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method08 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 test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method09, 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 kiểm tra riêng lẻ bằng cách gán một thuộc tính thể hiện, self.LongMessage, cho python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method08 hoặc python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method09 trước khi gọi các phương thức ASPER. Cài đặt lớp được đặt lại trước mỗi cuộc gọi kiểm tra. 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 Diffs bằng các phương thức khẳng định báo cáo khác với lỗi. Nó mặc định là 80*8 ký tự. Các phương thức khẳng định bị ảnh hưởng bởi thuộc tính này là python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method12 (bao gồm tất cả các phương pháp so sánh trình tự ủy thác cho nó), python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method13 và test_isupper (__main__.TestStringMethods.test_isupper) ... ok test_split (__main__.TestStringMethods.test_split) ... ok test_upper (__main__.TestStringMethods.test_upper) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK07. Cài đặt python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method15 đến cd project_directory python -m unittest discover9 có nghĩa là không có độ dài tối đa của các khác. 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 trong bài kiểm tra: CounttestCase ()()¶Trả về số lượng thử nghiệm được biểu thị bởi đối tượng thử nghiệm này. Đối với các trường hợp python -m unittest -v test_module0, điều này sẽ luôn là python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method18. DefaultTestresult ()()¶ Trả về một thể hiện của lớp kết quả kiểm tra nên được sử dụng cho lớp trường hợp thử nghiệm này (nếu không có phiên bản kết quả nào khác được cung cấp cho phương pháp ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK72). Đối với các trường hợp python -m unittest -v test_module0, đây sẽ luôn là một ví dụ của ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK34; Các lớp con của python -m unittest -v test_module0 nên ghi đè lên điều này khi cần thiết. Tôi()¶()¶ Trả về một chuỗi xác định trường hợp kiểm tra cụ thể. Đây thường là tên đầy đủ của phương pháp kiểm tra, bao gồm mô -đun và tên lớp. Mô tả ngắn()¶()¶Trả về mô tả của bài kiểm tra, hoặc cd project_directory python -m unittest discover9 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 của phương thức kiểm tra DocString DocString, nếu có hoặc cd project_directory python -m unittest discover9. Đã thay đổi trong phiên bản 3.1: Trong 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ó mặt của một tài liệu. Điều này gây ra các vấn đề tương thích với các tiện ích mở rộng nhất quán và thêm tên thử nghiệm đã được chuyển đến python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method25 in Python 3.2. addcleanup (chức năng, /, *args, ** kwargs) ¶(function, /, *args, **kwargs)¶ Thêm một chức năng để được gọi theo sau cd project_directory python -m unittest discover4 để dọn dẹp tài nguyên được sử dụng trong quá trình thử nghiệm. Các chức năng sẽ được gọi theo thứ tự ngược lại theo thứ tự chúng được thêm vào (LIFO). Chúng được gọi với bất kỳ đối số và từ khóa nào được truyền vào python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method27 khi chúng được thêm vào. Nếu cd project_directory python -m unittest discover3 thất bại, nghĩa là cd project_directory python -m unittest discover4 không được gọi, thì bất kỳ chức năng dọn dẹp nào được thêm vào vẫn sẽ được gọi. Mới trong phiên bản 3.1. Entercontext (cm) ¶(cm)¶Nhập Trình quản lý bối cảnh được cung cấp. Nếu thành công, cũng thêm phương thức python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method30 làm hàm làm sạch bằng python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method27 và trả về kết quả của phương pháp python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method32.context manager. If successful, also add its python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method30 method as a cleanup function by python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method27 and return the result of the python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method32 method. Mới trong phiên bản 3.11. docleanups ()()¶Phương pháp này được gọi là vô điều kiện sau cd project_directory python -m unittest discover4 hoặc sau cd project_directory python -m unittest discover3 nếu cd project_directory python -m unittest discover3 sẽ tăng 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 vào bởi python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method27. Nếu bạn cần các chức năng dọn dẹp sẽ được gọi trước cd project_directory python -m unittest discover4 thì bạn có thể tự gọi python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method38. python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method38 Phương pháp bật ra khỏi ngăn xếp các chức năng dọn dẹp một lần, do đó nó có thể được gọi bất cứ lúc nào. Mới trong phiên bản 3.1. classMethodAdDClassCleanup (function, /, *args, ** kwargs) ¶addClassCleanup(function, /, *args, **kwargs)¶Thêm một chức năng để được gọi theo sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK46 để 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 theo thứ tự chúng được thêm vào (LIFO). Chúng được gọi với bất kỳ đối số và từ khóa nào được truyền vào python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method41 khi chúng được thêm vào. Nếu ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK45 thất bại, nghĩa là ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK46 không được gọi, thì bất kỳ chức năng dọn dẹp nào được thêm vào vẫn sẽ được gọi. Mới trong phiên bản 3.8. classMethodEnterClassContext (cm) ¶ enterClassContext(cm)¶Nhập Trình quản lý bối cảnh được cung cấp. Nếu thành công, cũng thêm phương thức python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method30 làm hàm làm sạch bằng python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method41 và trả về kết quả của phương pháp python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method32.context manager. If successful, also add its python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method30 method as a cleanup function by python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method41 and return the result of the python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method32 method. Mới trong phiên bản 3.11. ClassMethodDoclassCleanups ()doClassCleanups()¶Phương pháp này được gọi là vô điều kiện sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK46 hoặc sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK45 nếu ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK45 tăng 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 vào bởi python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method41. Nếu bạn cần các chức năng dọn dẹp sẽ được gọi trước ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK46 thì bạn có thể tự gọi python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method52. python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method52 Phương pháp bật ra khỏi ngăn xếp các chức năng dọn dẹp một lần, do đó nó có thể được gọi bất cứ lúc nào. Mới trong phiên bản 3.8. classMethodEnterClassContext (cm) ¶unittest.IsolatedAsyncioTestCase(methodName='runTest')¶Nhập Trình quản lý bối cảnh được cung cấp. Nếu thành công, cũng thêm phương thức python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method30 làm hàm làm sạch bằng python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method41 và trả về kết quả của phương pháp python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method32. Mới trong phiên bản 3.8. Mới trong phiên bản 3.11. asyncSetUp()¶ClassMethodDoclassCleanups () Phương pháp này được gọi là vô điều kiện sau... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK46 hoặc sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK45 nếu ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK45 tăng ngoại lệ.asyncTearDown()¶ 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 vào bởi python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method41. Nếu bạn cần các chức năng dọn dẹp sẽ được gọi trước ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK46 thì bạn có thể tự gọi python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method52. python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method52 Phương pháp bật ra khỏi ngăn xếp các chức năng dọn dẹp một lần, do đó nó có thể được gọi bất cứ lúc nào.(function, /, *args, **kwargs)¶ classunittest.isolatedasynciotestcase (methodname = 'runtest') ¶ Lớp này cung cấp API tương tự nhưpython -m unittest -v test_module0 và cũng chấp nhận các coroutines là các chức năng kiểm tra.enterAsyncContext(cm)¶ coroutineasyncsetup () ¶asynchronous context manager. If successful, also add its python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method62 method as a cleanup function by python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method63 and return the result of the python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method64 method. Mới trong phiên bản 3.11. ClassMethodDoclassCleanups ()(result=None)¶Phương pháp này được gọi là vô điều kiện sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK46 hoặc sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK45 nếu ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK45 tăng 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 vào bởi python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method41. Nếu bạn cần các chức năng dọn dẹp sẽ được gọi trước ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK46 thì bạn có thể tự gọi python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method52. python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method5 python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method52 Phương pháp bật ra khỏi ngăn xếp các chức năng dọn dẹp một lần, do đó nó có thể được gọi bất cứ lúc nào. classunittest.isolatedasynciotestcase (methodname = 'runtest') ¶unittest.FunctionTestCase(testFunc, setUp=None, tearDown=None, description=None)¶ Lớp này cung cấp API tương tự như python -m unittest -v test_module0 và cũng chấp nhận các coroutines là các chức năng kiểm tra. coroutineasyncsetup () ¶Phương pháp được gọi để chuẩn bị vật cố thử nghiệm. Điều này được gọi sau cd project_directory python -m unittest discover3. Điều này được gọi ngay lập tức trước khi gọi phương thức kiểm tra; Khác với ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK60 hoặc ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK38, bất kỳ ngoại lệ nào được đưa ra bởi phương pháp này sẽ được coi là một lỗi thay vì lỗi thử nghiệm. Việc thực hiện mặc định không có gì. coroutineasyncteardown () ¶Phương thức được gọi ngay sau khi phương pháp thử nghiệm đã được gọi và kết quả được ghi lại. Điều này được gọi trướccd project_directory python -m unittest discover4. Điều này được gọi ngay cả khi phương pháp kiểm tra nêu ra một ngoại lệ, vì vậy việc triển khai trong các lớp con có thể cần đặc biệt cẩn thận về việc kiểm tra trạng thái nội bộ. Bất kỳ ngoại lệ nào, ngoài ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK60 hoặc ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK38, được đưa ra bởi phương pháp này sẽ được coi là một lỗi bổ sung thay vì lỗi kiểm tra (do đó làm tăng tổng số lỗi được báo cáo). Phương pháp này sẽ chỉ được gọi nếu python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method61 thành công, bất kể kết quả của phương pháp thử nghiệm. Việc thực hiện mặc định không có gì. unittest.TestSuite(tests=())¶ 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 như một hàm làm sạch. CoroutineenteraSyncContext (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, cũng thêm phương thứcpython -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method62 làm hàm làm sạch bằng python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method63 và trả về kết quả của phương pháp python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method64.(test)¶ chạy (result = none) ¶ Đặt 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... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK34 được truyền qua kết quả. Nếu kết quả bị bỏ qua hoặc cd project_directory python -m unittest discover9, 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 ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK71) và được sử dụng. Đối tượng kết quả được trả lại cho người gọi ____ ____ 172. Vào cuối bài kiểm tra, tất cả các nhiệm vụ trong vòng lặp sự kiện bị hủy bỏ.(tests)¶ Một ví dụ minh họa thứ tự: Sau khi chạy thử nghiệm, python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method69 sẽ chứa python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method70. classunittest.fectiontestcase (testfunc, setup = none, refown = none, description = none) ¶ chạy (kết quả) ¶(result)¶Chạy các bài kiểm tra liên quan đến bộ này, thu thập kết quả vào đối tượng kết quả kiểm tra được truyền qua kết quả. Lưu ý rằng không giống như python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method85, python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method86 yêu cầu đối tượng kết quả được truyền vào. gỡ lỗi ()()¶ Chạy các bài kiểm tra liên quan đến bộ này mà không thu thập kết quả. Điều này cho phép các ngoại lệ được đưa ra bởi bài kiểm tra được truyền đến người gọi và có thể được sử dụng để hỗ trợ các thử nghiệm chạy theo trình gỡ lỗi. CounttestCase ()()¶Trả về số lượng thử nghiệm được biểu thị bởi đối tượng thử nghiệm này, bao gồm tất cả các bài kiểm tra và bộ phụ riêng lẻ. __iter __ ()()¶Các thử nghiệm được nhóm bởi ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17 luôn được truy cập bằng cách lặp. Các lớp con có thể cung cấp các bài kiểm tra một cách lười biếng bằng cách ghi đè python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method88. Lưu ý rằng phương pháp này có thể được gọi nhiều lần trên một bộ (ví dụ: khi đếm các bài kiểm tra hoặc so sánh cho bình đẳng) để các thử nghiệm được trả về bằng các lần lặp lặp lại trước khi python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method86 phải giống nhau cho mỗi lần lặp lại. Sau python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method86, người gọi không nên dựa vào các bài kiểm tra được trả về bằng phương thức này trừ khi người gọi sử dụng một lớp con ghi đè python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method91 để lưu giữ các tài liệu tham khảo thử nghiệm. Đã thay đổi trong phiên bản 3.2: Trong các phiên bản trước, ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17 accessed tests directly rather than through iteration, so overriding python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method88 wasn’t sufficient for providing tests. Đã thay đổi trong phiên bản 3.4: Trong các phiên bản trước, ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17 held references to each python -m unittest -v test_module0 after python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method86. Subclasses can restore that behavior by overriding python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method91. Trong cách sử dụng điển hình của đối tượng ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17, phương pháp ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK72 được gọi bởi python -m unittest tests/test_something.py00 thay vì khai thác thử nghiệm người dùng cuối. Đang tải và chạy thử nghiệmclassunittest.testloader¶unittest.TestLoader¶Lớp python -m unittest tests/test_something.py01 được sử dụng để tạo các bộ thử nghiệm từ các lớp và mô -đun. Thông thường, không cần phải tạo một thể hiện của lớp này; Mô -đun python -m unittest tests/test_something.py7 cung cấp một thể hiện có thể được chia sẻ là python -m unittest tests/test_something.py03. Tuy nhiên, sử dụng một lớp con hoặc thể hiện cho phép tùy chỉnh một số thuộc tính có thể định cấu hình. Đối tượng python -m unittest tests/test_something.py01 có các thuộc tính sau: lỗi¶ Một danh sách các lỗi không gây tử vong gặp phải trong khi tải các bài kiểm tra. Không đặt lại bởi trình tải tại bất kỳ điểm nào. Các lỗi gây tử vong được báo hiệu bằng phương pháp có liên quan nâng cao ngoại lệ cho người gọi. Các lỗi không gây tử vong cũng được biểu thị bằng một bài kiểm tra 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. Đối tượng python -m unittest tests/test_something.py01 có các phương pháp sau: LoadTestSFromTestCase (TestCaseClass) ¶(testCaseClass)¶ Trả về một bộ của tất cả các trường hợp thử nghiệm có trong python -m unittest tests/test_something.py07 có nguồn gốc từ ____ 50. Một 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.py08. Theo mặc định, đây là các tên phương thức bắt đầu bằng python -m unittest -v test_module7. Nếu python -m unittest tests/test_something.py08 trả về không có phương thức, nhưng phương thức ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK56 được thực hiện, một trường hợp thử nghiệm duy nhất được tạo cho phương thức đó thay thế. LoadTestSfrayule (Mô -đun, Mẫu = Không) ¶(module, pattern=None)¶ Trả về một bộ của tất cả các trường hợp thử nghiệm có trong mô -đun đã cho. Phương pháp này tìm kiếm mô -đun cho các lớp có nguồn gốc từ python -m unittest -v test_module0 và tạo một thể hiện của lớp cho mỗi phương thức kiểm tra được xác định cho lớp. Ghi chú Mặc dù sử dụng hệ thống phân cấp của các lớp ____ ____ 50 có thể thuận tiện trong việc chia sẻ đồ đạc và chức năng trợ giúp, việc xác định các phương thức kiểm tra trên các lớp cơ sở không dự định được khởi tạo trực tiếp không chơi tốt với phương pháp này. Làm như vậy, tuy nhiên, 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.py14, nó sẽ được gọi để tải các thử nghiệm. Điều này cho phép các mô -đun tùy chỉnh tải thử. Đây là giao thức load_tests. Đối số mẫu được truyền như là đối số thứ ba cho python -m unittest tests/test_something.py14. Đã thay đổi trong phiên bản 3.2: Hỗ trợ cho python -m unittest tests/test_something.py14 added. Đã thay đổi trong phiên bản 3.5: đối số mặc định không chính thức và không chính thức_Load_Tests 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ột mẫu đối số chỉ dành cho từ khóa được chuyển đến python -m unittest tests/test_something.py14 as the third argument. LoadTestSFromName (Tên, Mô -đun = Không) ¶(name, module=None)¶ Trả về một bộ của tất cả các trường hợp thử nghiệm được đưa ra một chỉ định chuỗi. Tên trình xác định là một tên chấm chấm của người Viking có thể giải quyết thành một mô -đun, lớp trường hợp thử nghiệm, phương thức kiểm tra trong lớp trường hợp thử nghiệm, một trường hợp ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17 hoặc đối tượng có thể gọi được trả về một phiên bản python -m unittest -v test_module0 hoặc ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17. Các kiểm tra này được áp dụng trong đơn đặt hàng được liệt kê ở đây; Đó là, một phương pháp trên một lớp trường hợp thử nghiệm có thể sẽ được chọn là một phương pháp thử nghiệm trong một trường hợp thử nghiệm, thay vì một đối tượng có thể gọi được. Ví dụ: nếu bạn có một mô-đun python -m unittest tests/test_something.py21 chứa lớp python -m unittest tests/test_something.py23 có nguồn gốc ____ 50 với ba phương pháp thử nghiệm ( python -m unittest tests/test_something.py24, python -m unittest tests/test_something.py25 và python -m unittest tests/test_something.py26), trình xác nhận python -m unittest tests/test_something.py27 sẽ khiến phương thức này trả về một bộ sẽ chạy tất cả ba phương pháp thử nghiệm. Sử dụng bộ xác định python -m unittest tests/test_something.py28 sẽ khiến nó trả về bộ thử nghiệm sẽ chỉ chạy phương pháp kiểm tra python -m unittest tests/test_something.py25. Bộ xác định có thể tham khảo các mô -đun và gói chưa được nhập; Chúng sẽ được nhập khẩu dưới dạng tác dụng phụ. Phương pháp tùy chọn giải quyết tên so với mô -đun đã cho. Đã thay đổi trong phiên bản 3.5: Nếu xảy ra python -m unittest tests/test_something.py30 or python -m unittest tests/test_something.py31 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 (Tên, Mô -đun = Không) ¶(names, module=None)¶ Tương tự như python -m unittest tests/test_something.py32, nhưng có một chuỗi các tên chứ không phải là 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ên. gettestcasenames (testcaseclass) ¶(testCaseClass)¶ Trả về một chuỗi được sắp xếp các tên phương thức được tìm thấy trong testcaseclass; Đây phải là một lớp con của python -m unittest -v test_module0. Khám phá (start_dir, catplay = 'test*.py', top_level_dir = none) ¶(start_dir, pattern='test*.py', top_level_dir=None)¶ Tìm tất cả các mô -đun thử nghiệm bằng cách đệ quy thành các thư mục con từ thư mục bắt đầu được chỉ định và trả về một đối tượng TestSuite chứa chúng. Chỉ các tệp kiểm tra mà mẫu khớp 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, ví dụ do lỗi cú pháp, thì điều này sẽ được ghi lại dưới dạng một lỗi duy nhất và khám phá sẽ tiếp tục. Nếu lỗi nhập là do ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK38 được nâng lên, nó sẽ được ghi lại dưới dạng bỏ qua thay vì lỗi. Nếu một gói (một thư mục chứa một tệp có tên import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50))6) được tìm thấy, gói sẽ được kiểm tra chức năng python -m unittest tests/test_something.py14. Nếu điều này tồn tại thì nó sẽ được gọi là python -m unittest tests/test_something.py37. Thử nghiệm khám phá cẩn thận để đảm bảo rằng gói chỉ được kiểm tra các thử nghiệm một lần trong quá trình gọi, ngay cả khi chức năng Load_Tests gọi python -m unittest tests/test_something.py38. Nếu python -m unittest tests/test_something.py14 tồn tại thì Discovery không tái phát vào gói, python -m unittest tests/test_something.py14 chịu trách nhiệm tải tất cả các thử nghiệm trong gói. Mẫu được cố tình không được 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ữ để python -m unittest tests/test_something.py14 không cần phải chuyển đối số này trong python -m unittest tests/test_something.py42. start_dir có thể là một tên mô -đun chấm cũng như một 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 ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK38 on import are recorded as skips, not errors. Đã 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 để lệnh thực thi giống nhau ngay cả khi hệ thống tệp cơ bản đặt hàng không phụ thuộc vào tên tệp.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. Đã thay đổi trong phiên bản 3.5: Các gói được tìm thấy hiện đã được kiểm tra python -m unittest tests/test_something.py14 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 thể là một gói không gian tên. Nó đã bị phá vỡ kể từ Python 3.7 và Python 3.11 chính thức loại bỏ nó.start_dir can not be a namespace packages. It has been broken since Python 3.7 and Python 3.11 officially remove it. Các thuộc tính sau của python -m unittest tests/test_something.py01 có thể được cấu hình bằng cách phân lớp hoặc gán trên một thể hiện: testmethodprefix¶¶ Chuỗi đặt cho tiền tố của các tên phương thức sẽ được hiểu là các phương thức kiểm tra. Giá trị mặc định là python -m unittest tests/test_something.py46. Điều này ảnh hưởng đến python -m unittest tests/test_something.py08 và tất cả các phương pháp python -m unittest tests/test_something.py48. SortTestMethodsusing¶¶ Chức năng đượ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.py08 và tất cả các phương thức python -m unittest tests/test_something.py48. Suiteclass¶¶ Đối tượng có thể gọi được xây dựng một bộ thử nghiệm từ một danh sách các bài kiểm tra. Không có phương pháp trên đối tượng kết quả là cần thiết. Giá trị mặc định là lớp ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17. Điều này ảnh hưởng đến tất cả các phương pháp python -m unittest tests/test_something.py48. testNamePotye¶ Danh sách các mẫu tên thử nghiệm ký tự đại diện theo kiểu shell shell phải phù hợp để được đưa vào các bộ thử nghiệm (xem tùy chọn cd project_directory python -m unittest discover6). Nếu thuộc tính này không phải là cd project_directory python -m unittest discover9 (mặc định), tất cả các phương thức thử nghiệm được đưa vào trong các bộ thử nghiệm 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 trận đấu luôn được thực hiện bằng cách sử dụng python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"2, do đó, không giống như các mẫu được truyền đến tùy chọn cd project_directory python -m unittest discover6, các mẫu con đơn giản sẽ phải được chuyển đổi bằng cách sử dụng ký tự đại diện python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"1. Điều này ảnh hưởng đến tất cả các phương pháp python -m unittest tests/test_something.py48. testNamePotye Danh sách các mẫu tên thử nghiệm ký tự đại diện theo kiểu shell shell phải phù hợp để được đưa vào các bộ thử nghiệm (xem tùy chọncd project_directory python -m unittest discover6). unittest.TestResult¶ Nếu thuộc tính này không phải là cd project_directory python -m unittest discover9 (mặc định), tất cả các phương thức thử nghiệm được đưa vào trong các bộ thử nghiệm 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 trận đấu luôn được thực hiện bằng cách sử dụng python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"2, do đó, không giống như các mẫu được truyền đến tùy chọn cd project_directory python -m unittest discover6, các mẫu con đơn giản sẽ phải được chuyển đổi bằng cách sử dụng ký tự đại diện python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"1. Mới trong phiên bản 3.7. classunittest.testresult¶ ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK34 Các trường hợp có các thuộc tính sau sẽ được quan tâm khi kiểm tra kết quả chạy một tập hợp các bài kiểm tra: lỗi¶ Một danh sách chứa 2 bộ của các trường hợp python -m unittest -v test_module0 và các chuỗi giữ các dấu vết được định dạng. Mỗi tuple đại diện cho một bài kiểm tra làm tăng một ngoại lệ bất ngờ. thất bại trong¶ Một danh sách chứa 2 bộ của các trường hợp python -m unittest -v test_module0 và các chuỗi giữ các dấu vết được định dạng. Mỗi tuple đại diện cho một thử nghiệm trong đó một lỗi được báo hiệu rõ ràng bằng các phương pháp python -m unittest tests/test_something.py69. bỏ qua¶ Một danh sách chứa 2 bộ của các trường hợp và chuỗi python -m unittest -v test_module0 giữ lý do bỏ qua bài kiểm tra. Mới trong phiên bản 3.1. mong đợi¶Một danh sách chứa 2 bộ của các trường hợp python -m unittest -v test_module0 và các chuỗi giữ các dấu vết được định dạng. Mỗi tuple đại diện cho một lỗi hoặc lỗi dự kiến của trường hợp kiểm tra. bất ngờ¶ Một danh sách chứa các trường hợp python -m unittest -v test_module0 được đánh dấu là những thất bại dự kiến, nhưng đã thành công. nên dừng lại¶¶ Được đặt thành python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method08 khi việc thực hiện các bài kiểm tra sẽ dừng lại bằng python -m unittest tests/test_something.py74. testsrun¶¶ Tổng số bài kiểm tra chạy cho đến nay. đệm¶¶Nếu được đặt thành true, python -m unittest tests/test_something.py75 và python -m unittest tests/test_something.py76 sẽ được đệm ở giữa python -m unittest tests/test_something.py77 và python -m unittest tests/test_something.py78 được gọi. Đầu ra được thu thập sẽ chỉ được lặp lại trên real python -m unittest tests/test_something.py75 và python -m unittest tests/test_something.py76 nếu thử nghiệm không thành công hoặc lỗi. Bất kỳ đầu ra cũng được gắn vào thông báo lỗi / lỗi. Mới trong phiên bản 3.2. thất bại trong¶Nếu được đặt thành true python -m unittest tests/test_something.py74 sẽ được gọi vào lỗi hoặc lỗi đầu tiên, tạm dừng lần chạy thử. Mới trong phiên bản 3.2. thất bại trong¶Nếu được đặt thành true python -m unittest tests/test_something.py74 sẽ được gọi vào lỗi hoặc lỗi đầu tiên, tạm dừng lần chạy thử. tb_locals¶ Nếu được đặt thành True thì các biến cục bộ sẽ được hiển thị trong Tracebacks.()¶Mới trong phiên bản 3.5. đã thành công()¶()¶Trả về python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method08 Nếu tất cả các bài kiểm tra chạy cho đến nay đã vượt qua, nếu không, sẽ trả về python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method09. dừng lại()¶ Phương pháp này có thể được gọi để báo hiệu rằng tập hợp các thử nghiệm đang được chạy phải bị hủy bỏ bằng cách đặt thuộc tính python -m unittest tests/test_something.py84 thành python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method08. Các đối tượng python -m unittest tests/test_something.py00 nên tôn trọng cờ này và trả về mà không cần chạy bất kỳ bài kiểm tra bổ sung nào. Ví dụ: tính năng này được sử dụng bởi lớp python -m unittest tests/test_something.py87 để dừng khung kiểm tra khi người dùng báo hiệu một 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.py00 có thể sử dụng điều này theo cách tương tự.(test)¶ Các phương pháp sau đây của lớp ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK34 được sử dụng để duy trì các 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 các thử nghiệm đang được chạy. starttest (kiểm tra) ¶(test)¶ Được gọi khi thử nghiệm thử nghiệm sắp được chạy. stoptest (kiểm tra) ¶()¶Được gọi sau khi thử nghiệm thử nghiệm đã được thực hiện, bất kể kết quả. Mới trong phiên bản 3.1. mong đợi()¶Một danh sách chứa 2 bộ của các trường hợp python -m unittest -v test_module0 và các chuỗi giữ các dấu vết được định dạng. Mỗi tuple đại diện cho một lỗi hoặc lỗi dự kiến của trường hợp kiểm tra. Mới trong phiên bản 3.1. mong đợi(test, err)¶Một danh sách chứa 2 bộ của các trường hợp python -m unittest -v test_module0 và các chuỗi giữ các dấu vết được định dạng. Mỗi tuple đại diện cho một lỗi hoặc lỗi dự kiến của trường hợp kiểm tra. bất ngờ Một danh sách chứa các trường hợppython -m unittest -v test_module0 được đánh dấu là những thất bại dự kiến, nhưng đã thành công.(test, err)¶ nên dừng lại¶ Được đặt thành python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method08 khi việc thực hiện các bài kiểm tra sẽ dừng lại bằng python -m unittest tests/test_something.py74. testsrun¶(test)¶ Tổng số bài kiểm tra chạy cho đến nay. đệm¶ Nếu được đặt thành true,python -m unittest tests/test_something.py75 và python -m unittest tests/test_something.py76 sẽ được đệm ở giữa python -m unittest tests/test_something.py77 và python -m unittest tests/test_something.py78 được gọi. Đầu ra được thu thập sẽ chỉ được lặp lại trên real python -m unittest tests/test_something.py75 và python -m unittest tests/test_something.py76 nếu thử nghiệm không thành công hoặc lỗi. Bất kỳ đầu ra cũng được gắn vào thông báo lỗi / lỗi.(test, reason)¶ Mới trong phiên bản 3.2. thất bại trong Nếu được đặt thành truepython -m unittest tests/test_something.py74 sẽ được gọi vào lỗi hoặc lỗi đầu tiên, tạm dừng lần chạy thử.(test, err)¶ tb_locals¶ Nếu được đặt thành True thì các biến cục bộ sẽ được hiển thị trong Tracebacks. Mới trong phiên bản 3.5.(test)¶đã thành công()¶ Trả về python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method08 Nếu tất cả các bài kiểm tra chạy cho đến nay đã vượt qua, nếu không, sẽ trả về python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method09. dừng lại()¶(test, subtest, outcome)¶ Phương pháp này có thể được gọi để báo hiệu rằng tập hợp các thử nghiệm đang được chạy phải bị hủy bỏ bằng cách đặt thuộc tính python -m unittest tests/test_something.py84 thành python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method08. Các đối tượng python -m unittest tests/test_something.py00 nên tôn trọng cờ này và trả về mà không cần chạy bất kỳ bài kiểm tra bổ sung nào. Ví dụ: tính năng này được sử dụng bởi lớp python -m unittest tests/test_something.py87 để dừng khung kiểm tra khi người dùng báo hiệu một 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.py00 có thể sử dụng điều này theo cách tương tự. Các phương pháp sau đây của lớp ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK34 được sử dụng để duy trì các 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 các thử nghiệm đang được chạy. Mới trong phiên bản 3.4. classunittest.texttestresult (stream, mô tả, verbosity) ¶unittest.TextTestResult(stream, descriptions, verbosity)¶Một triển khai cụ thể của ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK34 được sử dụng bởi python -m unittest tests/test_something.py87. Mới trong phiên bản 3.2: Lớp này trước đây được đặt tên là python -m unittest -v test_module11. The old name still exists as an alias but is deprecated. Unittest.DefaultTestloader¶defaultTestLoader¶ Ví dụ của lớp python -m unittest tests/test_something.py01 dự định được chia sẻ. Nếu không cần tùy chỉnh python -m unittest tests/test_something.py01, trường hợp này có thể được sử dụng thay vì liên tục tạo các trường hợp mới. classunittest.texttestrunner (stream = none, mô tả = true, verbosity = 1, failfast = falseunittest.TextTestRunner(stream=None, descriptions=True, verbosity=1, failfast=False, buffer=False, resultclass=None, warnings=None, *, tb_locals=False)¶ Một triển khai người chạy thử nghiệm cơ bản đưa ra kết quả cho một luồng. Nếu luồng là cd project_directory python -m unittest discover9, mặc định, python -m unittest tests/test_something.py76 được sử dụng làm luồng đầu ra. Lớp này có một vài tham số có thể định cấu hình, nhưng về cơ bản rất đơn giản. Các ứng dụng đồ họa chạy các bộ thử nghiệm nên cung cấp các triển khai thay thế. Các triển khai như vậy sẽ chấp nhận python -m unittest -v test_module16 vì giao diện để xây dựng các thay đổi của người chạy khi các tính năng được thêm vào Unittest. Theo mặc định, người chạy này hiển thị python -m unittest -v test_module17, python -m unittest -v test_module18, python -m unittest -v test_module19 và python -m unittest -v test_module20 ngay cả khi chúng bị bỏ qua theo mặc định. Các cảnh báo từ chối gây ra bởi các phương pháp không phản đối cũng được giới thiệu đặc biệt và, khi các bộ lọc cảnh báo là python -m unittest -v test_module21 hoặc python -m unittest -v test_module22, chúng sẽ chỉ xuất hiện một lần theo mô-đun, để tránh quá nhiều thông điệp cảnh báo. Hành vi này có thể được ghi đè bằng cách sử dụng các tùy chọn Python từ ____523 hoặc python -m unittest -v test_module24 (xem kiểm soát cảnh báo) và để lại cảnh báo cho cd project_directory python -m unittest discover9.ignored by default. Deprecation warnings caused by deprecated unittest methods are also special-cased and, when the warning filters are python -m unittest -v test_module21 or python -m unittest -v test_module22, 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_module23 or python -m unittest -v test_module24 options (see Warning control) and leaving warnings to cd project_directory python -m unittest discover9. Đã thay đổi trong phiên bản 3.2: Đã thêm đối số python -m unittest -v test_module26 argument. Đã thay đổi trong phiên bản 3.2: Luồng mặc định được đặt thành python -m unittest tests/test_something.py76 at instantiation time rather than import time. Đã thay đổi trong phiên bản 3.5: Đã thêm tham số TB_LOCALS.Added the tb_locals parameter. _ bradmesult ()()¶Phương pháp này trả về thể hiện của ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK34 được sử dụng bởi ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK72. 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 tùy chỉnh ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK34. python -m unittest -v test_module31 khởi tạo lớp hoặc có thể gọi được thông qua trong hàm tạo python -m unittest tests/test_something.py87 làm đối số python -m unittest -v test_module33. Nó mặc định là python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method25 nếu không có python -m unittest -v test_module33 được cung cấp. Lớp kết quả được khởi tạo với các đối số sau: python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method6 chạy (kiểm tra) ¶(test)¶ Phương pháp này là giao diện công cộng chính cho python -m unittest tests/test_something.py87. Phương pháp này có một ví dụ ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17 hoặc python -m unittest -v test_module0. Một ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK34 được tạo bằng cách gọi python -m unittest -v test_module31 và (các) bài kiểm tra được chạy và kết quả được in thành stdout. unittest.main (module = '__ main__', defaultTest = none Không có)¶main(module='__main__', defaultTest=None, argv=None, testRunner=None, testLoader=unittest.defaultTestLoader, exit=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 thử nghiệm từ mô-đun và chạy chúng; Điều này chủ yếu để thực hiện các mô -đun thử nghiệm có thể thực thi thuận tiện. Việc sử dụng đơn giản nhất cho chức năng này là bao gồm dòng sau ở cuối tập lệnh kiểm tra: python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method7 Bạn có thể chạy các bài kiểm tra với thông tin chi tiết hơn bằng cách truyền trong đối số xác suất: python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method8 Đối số DefaultTest là tên của một bài kiểm tra hoặc một tên thử nghiệm có thể 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 cd project_directory python -m unittest discover9 và không có tên thử nghiệm nào được cung cấp qua Argv, tất cả các thử nghiệm được tìm thấy trong mô -đun được chạy. Đối số Argv có thể là danh sách các tùy chọn được truyền cho 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 cd project_directory python -m unittest discover9, các giá trị của python -m unittest -v test_module43 được sử dụng. Đối số testrunner có thể là một lớp người chạy thử hoặc một thể hiện đã được tạo của nó. Theo mặc định python -m unittest -v test_module44 gọi python -m unittest -v test_module45 với mã thoát cho biết thành công hoặc thất bại của các bài kiểm tra chạy. Đối số TestLoader phải là một ví dụ python -m unittest tests/test_something.py01 và mặc định là python -m unittest -v test_module47. python -m unittest -v test_module44 hỗ trợ được sử dụng từ trình thông dịch tương tác bằng cách truyền trong đối số python -m unittest -v test_module49. Đ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_module45: python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method9 Các tham số Failfast, Catchbreak và bộ đệm có hiệu ứ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 nên được sử dụng trong khi chạy các bài kiểm tra. Nếu nó không được chỉ định, nó sẽ vẫn còn cd project_directory python -m unittest discover9 nếu tùy chọn python -m unittest -v test_module52 đượ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_module21.warning filter that should be used while running the tests. If it’s not specified, it will remain cd project_directory python -m unittest discover9 if a python -m unittest -v test_module52 option is passed to python (see Warning control), otherwise it will be set to python -m unittest -v test_module21. Gọi python -m unittest -v test_module44 thực sự trả về một thể hiện của lớp python -m unittest -v test_module55. Điều này lưu trữ kết quả của các thử nghiệm chạy dưới dạng thuộc tính python -m unittest -v test_module56. Thay đổi trong phiên bản 3.1: Tham số thoát đã được thêm vào.The exit parameter was added. Đã thay đổi trong phiên bản 3.2: Các thông số về độ verbosity, failfast, catchbreak, bộ đệm và cảnh báo đã được thêm vào.The verbosity, failfast, catchbreak, buffer and warnings parameters were added. Đã thay đổi trong phiên bản 3.4: Tham số DefaultTest đã được thay đổi để cũng chấp nhận một tên thử nghiệm.The defaultTest parameter was changed to also accept an iterable of test names. Giao thức Load_TestsMớ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 thử nghiệm được tải từ chúng trong quá trình chạy thử nghiệm thông thường hoặc khám phá thử nghiệm bằng cách thực hiện một hàm gọi là python -m unittest tests/test_something.py14. Nếu một mô -đun thử nghiệm xác định python -m unittest tests/test_something.py14, nó sẽ được gọi bởi python -m unittest -v test_module59 với các đối số sau: python -m unittest tests/test_something.py0 trong đó mẫu được truyền thẳng từ python -m unittest -v test_module60. Nó mặc định là cd project_directory python -m unittest discover9. Nó sẽ trả lại một ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17. Trình tải là ví dụ của python -m unittest tests/test_something.py01 đang tải. Standard_Tests là các thử nghiệm sẽ được tải theo mặc định từ mô -đun. Người ta thường chỉ muốn thêm hoặc xóa các bài kiểm tra khỏi bộ kiểm tra 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.py14 đ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_module0 cụ thể có thể trông giống như: python -m unittest tests/test_something.py1 Nếu Discovery được bắt đầu trong một thư mục chứa gói, từ dòng lệnh hoặc bằng cách gọi # proj/ <-- current directory # namespace/ # mypkg/ # __init__.py # test_mypkg.py python -m unittest discover -s namespace.mypkg -t .2, thì gói import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50))6 sẽ được kiểm tra python -m unittest tests/test_something.py14. Nếu chức năng đó không tồn tại, Discovery sẽ tái phát vào gói như thể nó chỉ là một thư mục khác. Mặt khác, việc phát hiện ra các thử nghiệm của gói sẽ được để lại lên đến python -m unittest tests/test_something.py14 được gọi với các đối số sau: python -m unittest tests/test_something.py0 Điều này sẽ trả về ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17 đại diện cho tất cả các thử nghiệm từ gói. ( python -m unittest -v test_module71 sẽ chỉ chứa các thử nghiệm được thu thập từ import unittest class DefaultWidgetSizeTestCase(unittest.TestCase): def test_default_widget_size(self): widget = Widget('The widget') self.assertEqual(widget.size(), (50, 50))6.) Bởi vì mẫu được chuyển vào python -m unittest tests/test_something.py14, gói miễn phí để tiếp tục (và có khả năng sửa đổi) khám phá thử nghiệm. A ‘Không làm gì chức năng python -m unittest tests/test_something.py14 cho gói thử nghiệm sẽ giống như: python -m unittest tests/test_something.py3 Đã thay đổi trong phiên bản 3.5: Discovery không còn kiểm tra tên gói cho mẫu phù hợp do không thể có tên gói phù hợp với mẫu mặc định.Discovery no longer checks package names for matching pattern due to the impossibility of package names matching the default pattern. Lớp và mô -đun đồ đạcĐồ đạc cấp độ và mô -đun được thực hiện trong ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK17. Khi bộ kiểm tra gặp phải một bài kiểm tra từ một lớp mới thì ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK46 từ lớp trước (nếu có) được gọi, theo sau là ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK45 từ lớp mới. Tương tự nếu một thử nghiệm là từ một mô -đun khác với thử nghiệm trước đó python -m unittest -v test_module78 từ mô -đun trước được chạy, theo sau là python -m unittest -v test_module79 từ mô -đun mới. Sau khi tất cả các bài kiểm tra đã chạy cuối cùng ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK67 và python -m unittest -v test_module78 được chạy. Lưu ý rằng đồ đạc được chia sẻ không chơi tốt với các tính năng [tiềm năng] như song song thử nghiệm và chúng phá vỡ sự cô lập thử nghiệm. Chúng nên được sử dụng một cách chăm sóc. Thứ tự mặc định của các thử nghiệm được tạo bởi các trình tải thử nghiệm không nhất quán là nhóm tất cả các thử nghiệm từ cùng một mô -đun và các lớp với nhau. Điều này sẽ dẫn đến ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK65 / python -m unittest -v test_module79 (v.v.) được gọi chính xác một lần mỗi lớp và mô -đun. Nếu bạn chọn ngẫu nhiên thứ tự, để các thử nghiệm từ các mô -đun và lớp khác nhau liền kề với nhau, thì các chức năng cố định được chia sẻ này có thể được gọi nhiều lần trong một lần chạy thử. Đồ đạc được chia sẻ không nhằm mục đích làm việc với các bộ với đặt hàng không chuẩn. Một python -m unittest -v test_module84 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ỳ trường hợp ngoại lệ nào được nêu trong một trong các chức năng cố định được chia sẻ, thử nghiệm được báo cáo là một lỗi. Do không có phiên bản kiểm tra tương ứng, một đối tượng python -m unittest -v test_module85 (có giao diện tương tự như python -m unittest -v test_module0) được tạo để biểu thị lỗi. Nếu bạn chỉ sử dụng trình chạy thử nghiệm Unittest tiêu chuẩn thì chi tiết này không quan trọng, nhưng nếu bạn là tác giả khung thì có thể có liên quan. Lớp học và Lớp học Teakeddross¶Chúng phải được thực hiện như các phương thức lớp: python -m unittest tests/test_something.py4 Nếu bạn muốn ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK65 và ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK67 trên các lớp cơ sở được gọi thì bạn phải tự gọi cho họ. Việc triển khai trong python -m unittest -v test_module0 trống. Nếu một ngoại lệ được nâng lên trong một ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK65 thì các bài kiểm tra trong lớp không được chạy và ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK67 không được chạy. Các lớp bị bỏ qua sẽ không có ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK65 hoặc ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK67 chạy. Nếu ngoại lệ là ngoại lệ ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK38 thì lớp sẽ được báo cáo là đã bị bỏ qua thay vì là một lỗi. Thiết lập và TeakedDownOdule¶Chúng nên được thực hiện dưới dạng chức năng: python -m unittest tests/test_something.py5 Nếu một ngoại lệ được nêu trong python -m unittest -v test_module79 thì không có bài kiểm tra nào trong mô -đun sẽ được chạy và python -m unittest -v test_module78 sẽ không được chạy. Nếu ngoại lệ là ngoại lệ ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK38 thì mô -đun sẽ được báo cáo là đã bị bỏ qua thay vì là một lỗi. Để 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 -v test_module98: unittest.addmodulecleanup (function, /, *args, ** kwargs) ¶addModuleCleanup(function, /, *args, **kwargs)¶ Thêm một chức năng để được gọi theo sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK48 để dọn dẹp 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 theo thứ tự chúng được thêm vào (LIFO). Chúng được gọi với bất kỳ đối số và từ khóa nào được truyền vào cd project_directory python -m unittest discover00 khi chúng được thêm vào. Nếu ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK47 thất bại, nghĩa là ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK48 không được gọi, thì bất kỳ chức năng dọn dẹp nào được thêm vào vẫn sẽ được gọi. Mới trong phiên bản 3.8. classmethodunittest.entermodulecontext (cm) ¶unittest.enterModuleContext(cm)¶Nhập Trình quản lý bối cảnh được cung cấp. Nếu thành công, cũng thêm phương thức python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method30 làm hàm làm sạch bằng cd project_directory python -m unittest discover00 và trả về kết quả của phương pháp python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method32.context manager. If successful, also add its python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method30 method as a cleanup function by cd project_directory python -m unittest discover00 and return the result of the python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method32 method. Mới trong phiên bản 3.11. unittest.domodulecleanups () ¶doModuleCleanups()¶Hàm này được gọi là vô điều kiện sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK48 hoặc sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK47 nếu ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK47 tăng 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 vào bởi cd project_directory python -m unittest discover00. Nếu bạn cần các chức năng dọn dẹp sẽ được gọi trước ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK48 thì bạn có thể tự gọi cd project_directory python -m unittest discover11. cd project_directory python -m unittest discover11 Phương pháp bật ra khỏi ngăn xếp các chức năng dọn dẹp mỗi lần, 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. classmethodunittest.entermodulecontext (cm) ¶Nhập Trình quản lý bối cảnh được cung cấp. Nếu thành công, cũng thêm phương thức Mới trong phiên bản 3.11. unittest.domodulecleanups () ¶ Hàm này được gọi là vô điều kiện sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK48 hoặc sau ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK47 nếu ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK47 tăng 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 vào bởi cd project_directory python -m unittest discover00. Nếu bạn cần các chức năng dọn dẹp sẽ được gọi trước ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK48 thì bạn có thể tự gọi cd project_directory python -m unittest discover11.installHandler()¶ cd project_directory python -m unittest discover11 Phương pháp bật ra khỏi ngăn xếp các chức năng dọn dẹp mỗi lần, vì vậy nó có thể được gọi bất cứ lúc nào. Xử lý tín hiệuregisterResult(result)¶ Mới trong phiên bản 3.2. Tùy chọn dòng lệnh cd project_directory python -m unittest discover13 để Unittest, cùng với tham số cd project_directory python -m unittest discover14 thành cd project_directory python -m unittest discover5, cung cấp cách xử lý thân thiện hơn về kiểm soát-C trong quá trình chạy thử. Với Catch Break, hành vi được kích hoạt Control-C sẽ cho phép thử nghiệm hiện đang chạy và chạy thử sau đó sẽ kết thúc và báo cáo tất cả các kết quả cho đến nay. Một điều khiển thứ hai sẽ tăng python -m unittest discover -s project_directory -p "*_test.py" python -m unittest discover project_directory "*_test.py"0 theo cách thông thường. Trình xử lý tín hiệu xử lý điều khiển-C cố gắng duy trì tương thích với mã hoặc kiểm tra cài đặt trình xử lý cd project_directory python -m unittest discover17 của riêng họ. Nếu trình xử lý python -m unittest tests/test_something.py7 được gọi nhưng không phải là trình xử lý cd project_directory python -m unittest discover17 được cài đặt, tức là nó đã được thay thế bởi hệ thống được thử nghiệm và được ủy quyền, thì nó gọi trình xử lý mặc định. Đây thường sẽ là hành vi dự kiến bằng mã thay thế một trình xử lý đã cài đặt và ủy quyền cho nó. Đối với các bài kiểm tra riêng lẻ cần sử dụng python -m unittest tests/test_something.py7 Control-C bị vô hiệu hóa, bộ trang trí cd project_directory python -m unittest discover21 có thể được sử dụng.removeResult(result)¶ Có một vài chức năng tiện ích cho các tác giả khung để cho phép chức năng xử lý Control-C trong các khung kiểm tra. Unittest.InstallHandler () ¶removeHandler(function=None)¶Cài đặt bộ xử lý Control-C. Khi nhận được một cd project_directory python -m unittest discover17 (thường là để đáp ứng với người dùng nhấn Control-C), tất cả các kết quả đã đăng ký đã được gọi là python -m unittest tests/test_something.py74. python -m unittest tests/test_something.py6 Thử nghiệm đơn vị trong Python với ví dụ là gì?Mô -đun Python Unittest được sử dụng để kiểm tra một đơn vị mã nguồn.... Kết quả kiểm tra đơn vị Python & các chức năng cơ bản .. Sự khác biệt giữa Pytest và Unittest là gì?Unittest yêu cầu các nhà phát triển tạo các lớp có nguồn gốc từ mô -đun TestCase và sau đó xác định các trường hợp thử nghiệm là phương thức trong lớp.Mặt khác, pytest chỉ yêu cầu bạn xác định một chức năng với Test Test_ Hồi được chuẩn bị và sử dụng các điều kiện khẳng định bên trong chúng.
Tôi có thể sử dụng Pytest và Unittest cùng nhau không?Pytest hỗ trợ chạy các bài kiểm tra dựa trên Python Unittest ra khỏi hộp.Điều đó có nghĩa là để tận dụng các bộ thử nghiệm không chính xác hiện có để sử dụng pytest làm người chạy thử và cũng cho phép điều chỉnh tăng dần bộ thử nghiệm để tận dụng tối đa các tính năng của pytest.. It's meant for leveraging existing unittest -based test suites to use pytest as a test runner and also allow to incrementally adapt the test suite to take full advantage of pytest's features.
@Patch trong Python là gì?Điều này, cùng với các lớp con của nó, sẽ đáp ứng hầu hết các nhu cầu chế giễu Python mà bạn sẽ phải đối mặt trong các bài kiểm tra của mình.Thư viện cũng cung cấp một hàm, được gọi là Patch (), thay thế các đối tượng thực trong mã của bạn bằng các phiên bản giả.replaces the real objects in your code with Mock instances. |