python -m unittest -v test_module49 và
python -m unittest -v test_module50 lần lượt thực hiện biến đổi Fourier và biến đổi Fourier ngược. Đối với
python -m unittest -v test_module51 và
python -m unittest -v test_module52 có độ dài
python -m unittest -v test_module53, các phép biến đổi này được định nghĩa như sau
Y[k]=∑j=1nX[j] An[j−1][k−1]X[j]=1 n∑k=1nY[k] An−[j−1][k−1
ở đâu
là một trong n gốc của sự thống nhất
Khung thử nghiệm đơn vị
python -m unittest tests/test_something.py9 ban đầu được lấy cảm hứng từ JUnit và có hương vị tương tự như các khung thử nghiệm đơn vị chính trong các ngôn ngữ khác. Nó hỗ trợ tự động hóa thử nghiệm, chia sẻ mã thiết lập và tắt cho các thử nghiệm, tổng hợp các thử nghiệm thành các bộ sưu tập và tính độc lập của các thử nghiệm với khung báo cáo
Để đạt được điều này,
python -m unittest tests/test_something.py9 hỗ trợ một số khái niệm quan trọng theo cách hướng đối tượnglịch thi đấu
Một bộ cố định thử nghiệm thể hiện sự chuẩn bị cần thiết để thực hiện một hoặc nhiều thử nghiệm và bất kỳ hành động dọn dẹp nào có liên quan. Điều này có thể bao gồm, ví dụ, tạo cơ sở dữ liệu tạm thời hoặc proxy, thư mục hoặc khởi động quy trình máy chủ
trường hợp thử nghiệmMột trường hợp thử nghiệm là đơn vị thử nghiệm riêng lẻ. Nó kiểm tra một phản hồi cụ thể đối với một bộ đầu vào cụ thể.
python -m unittest tests/test_something.py9 cung cấp một lớp cơ sở,
python -m unittest -v test_module3, có thể được sử dụng để tạo các trường hợp thử nghiệm mớibộ kiểm tra
Bộ kiểm thử là tập hợp các trường hợp kiểm thử, bộ kiểm thử hoặc cả hai. Nó được sử dụng để tổng hợp các bài kiểm tra nên được thực hiện cùng nhau
người chạy thửTrình chạy thử nghiệm là một thành phần điều phối việc thực hiện các thử nghiệm và cung cấp kết quả cho người dùng. Người chạy có thể sử dụng giao diện đồ họa, giao diện văn bản hoặc trả về một giá trị đặc biệt để chỉ ra kết quả thực hiện các bài kiểm tra
Xem thêm
Mô-đunpython -m unittest -v test_module4
Một mô-đun hỗ trợ thử nghiệm khác với hương vị rất khác
Kiểm tra Smalltalk đơn giản. có hoa vănBài báo gốc của Kent Beck về các khung thử nghiệm sử dụng mẫu được chia sẻ bởi
python -m unittest tests/test_something.py9người khó tính
Khung đơn giản nhất của bên thứ ba với cú pháp nhẹ hơn để viết bài kiểm tra. Ví dụ,
python -m unittest -v test_module6Phân loại công cụ kiểm tra Python
Một danh sách đầy đủ các công cụ kiểm tra Python bao gồm các khung kiểm tra chức năng và thư viện đối tượng giả
Thử nghiệm trong Danh sách gửi thư PythonMột nhóm có sở thích đặc biệt để thảo luận về thử nghiệm và các công cụ thử nghiệm trong Python
Tập lệnh
python -m unittest -v test_module7 trong bản phân phối nguồn Python là một công cụ GUI để khám phá và thực thi thử nghiệm. Điều này chủ yếu nhằm mục đích dễ sử dụng cho những người mới thử nghiệm đơn vị. Đối với môi trường sản xuất, các thử nghiệm nên được điều khiển bởi một hệ thống tích hợp liên tục như Buildbot, Jenkins, GitHub Actions hoặc AppVeyor
Ví dụ cơ bản¶
Mô-đun
python -m unittest tests/test_something.py9 cung cấp một bộ công cụ phong phú để xây dựng và chạy thử nghiệm. Phần này chứng minh rằng một tập hợp con nhỏ của các công cụ đủ để đáp ứng nhu cầu của hầu hết người dùng
Đây là một đoạn script ngắn để kiểm tra ba phương thức chuỗi
import unittest class TestStringMethods[unittest.TestCase]: def test_upper[self]: self.assertEqual['foo'.upper[], 'FOO'] def test_isupper[self]: self.assertTrue['FOO'.isupper[]] self.assertFalse['Foo'.isupper[]] def test_split[self]: s = 'hello world' self.assertEqual[s.split[], ['hello', 'world']] # check that s.split fails when the separator is not a string with self.assertRaises[TypeError]: s.split[2] if __name__ == '__main__': unittest.main[]
Một testcase được tạo bởi phân lớp
python -m unittest -v test_module9. Ba bài kiểm tra riêng lẻ được xác định bằng các phương thức có tên bắt đầu bằng các chữ cái
python -m unittest tests/test_something.py10. Quy ước đặt tên này thông báo cho người chạy thử nghiệm về phương thức nào đại diện cho các thử nghiệm
Mấu chốt của mỗi bài kiểm tra là một cuộc gọi tới
python -m unittest tests/test_something.py11 để kiểm tra kết quả mong đợi; . Các phương pháp này được sử dụng thay cho câu lệnh
python -m unittest tests/test_something.py15 để người chạy thử nghiệm có thể tích lũy tất cả các kết quả thử nghiệm và tạo báo cáo
Các phương thức
python -m unittest tests/test_something.py16 và
python -m unittest tests/test_something.py17 cho phép bạn xác định các lệnh sẽ được thực thi trước và sau mỗi phương thức kiểm tra. Chúng được đề cập chi tiết hơn trong phần Tổ chức mã kiểm tra .
Khối cuối cùng cho thấy một cách đơn giản để chạy thử nghiệm.
python -m unittest tests/test_something.py18 cung cấp giao diện dòng lệnh cho tập lệnh thử nghiệm. Khi chạy từ dòng lệnh, tập lệnh trên sẽ tạo ra một đầu ra giống như thế này
python -m unittest tests/test_something.py0
Chuyển tùy chọn
python -m unittest tests/test_something.py19 cho tập lệnh thử nghiệm của bạn sẽ hướng dẫn
python -m unittest tests/test_something.py18 kích hoạt mức độ chi tiết cao hơn và tạo ra kết quả sau
python -m unittest tests/test_something.py3
Các ví dụ trên cho thấy các tính năng
python -m unittest tests/test_something.py9 được sử dụng phổ biến nhất, đủ để đáp ứng nhiều nhu cầu kiểm tra hàng ngày. Phần còn lại của tài liệu khám phá bộ tính năng đầy đủ từ các nguyên tắc đầu tiên
Đã thay đổi trong phiên bản 3. 11. Hành vi trả về một giá trị từ một phương pháp thử nghiệm [không phải giá trị mặc định
python -m unittest tests/test_something.py52], hiện không được dùng nữa.
Giao diện dòng lệnh¶
Mô-đun unittest có thể được sử dụng từ dòng lệnh để chạy thử nghiệm từ các mô-đun, lớp hoặc thậm chí các phương thức thử nghiệm riêng lẻ
python -m unittest tests/test_something.py6
Bạn có thể chuyển vào một danh sách với bất kỳ sự kết hợp nào của tên mô-đun và tên phương thức hoặc lớp đủ điều kiện
Các mô-đun thử nghiệm cũng có thể được chỉ định theo đường dẫn tệp
python -m unittest tests/test_something.py
Điều này cho phép bạn sử dụng hoàn thành tên tệp shell để chỉ định mô-đun thử nghiệm. Tệp được chỉ định vẫn phải nhập được dưới dạng mô-đun. Đường dẫn được chuyển đổi thành tên mô-đun bằng cách xóa '. py' và chuyển đổi các dấu phân cách đường dẫn thành '. ’. Nếu bạn muốn thực thi tệp thử nghiệm không thể nhập dưới dạng mô-đun, thay vào đó, bạn nên thực thi tệp trực tiếp
Bạn có thể chạy thử nghiệm với nhiều chi tiết hơn [độ chi tiết cao hơn] bằng cách chuyển vào cờ -v
python -m unittest -v test_module
Khi được thực thi mà không có đối số Thử nghiệm Khám phá được bắt đầu.
python -m unittest tests/test_something.py1
Để biết danh sách tất cả các tùy chọn dòng lệnh
python -m unittest tests/test_something.py5
Đã thay đổi trong phiên bản 3. 2. Trong các phiên bản trước, chỉ có thể chạy các phương thức thử nghiệm riêng lẻ chứ không phải mô-đun hoặc lớp.
Tùy chọn dòng lệnh¶
unittest hỗ trợ các tùy chọn dòng lệnh này
-b, --bộ đệm ¶Đầu ra tiêu chuẩn và các luồng lỗi tiêu chuẩn được lưu vào bộ đệm trong quá trình chạy thử nghiệm. Đầu ra trong một bài kiểm tra vượt qua bị loại bỏ. Đầu ra được lặp lại bình thường khi kiểm tra lỗi hoặc lỗi và được thêm vào thông báo lỗi
-c, --bắt ¶Control-C trong quá trình chạy thử, đợi thử nghiệm hiện tại kết thúc rồi báo cáo tất cả các kết quả cho đến nay. Control-C thứ hai tăng ngoại lệ
python -m unittest tests/test_something.py53 bình thường
Xem Xử lý tín hiệu để biết các chức năng cung cấp chức năng này
-f, --không thành công ¶Dừng chạy thử khi có lỗi hoặc lỗi đầu tiên
-k ¶Chỉ chạy thử nghiệm các phương thức và lớp phù hợp với mẫu hoặc chuỗi con. Tùy chọn này có thể được sử dụng nhiều lần, trong trường hợp đó, tất cả các trường hợp thử nghiệm khớp với bất kỳ mẫu nào đã cho đều được bao gồm
Các mẫu có chứa ký tự đại diện [
python -m unittest tests/test_something.py54] được khớp với tên bài kiểm tra bằng cách sử dụng
python -m unittest tests/test_something.py55;
Các mẫu được so khớp với tên phương thức kiểm tra đủ điều kiện do trình tải kiểm tra nhập vào
Ví dụ:
python -m unittest tests/test_something.py56 khớp với
python -m unittest tests/test_something.py57,
python -m unittest tests/test_something.py58, nhưng không khớp với
python -m unittest tests/test_something.py59
Hiển thị các biến cục bộ trong truy vết
Mới trong phiên bản 3. 2. Các tùy chọn dòng lệnh
python -m unittest -v test_module80,
python -m unittest -v test_module81 và
python -m unittest -v test_module82 đã được thêm vào.
Mới trong phiên bản 3. 5. Tùy chọn dòng lệnh
python -m unittest -v test_module83.
Mới trong phiên bản 3. 7. Tùy chọn dòng lệnh
python -m unittest -v test_module84.
Dòng lệnh cũng có thể được sử dụng để khám phá thử nghiệm, để chạy tất cả các thử nghiệm trong một dự án hoặc chỉ một tập hợp con
Khám phá thử nghiệm¶
Mới trong phiên bản 3. 2
Unittest hỗ trợ khám phá thử nghiệm đơn giản. Để tương thích với khám phá thử nghiệm, tất cả các tệp thử nghiệm phải là mô-đun hoặc gói importable from the top-level directory of the project [this means that their filenames must be valid identifiers].
Khám phá thử nghiệm được triển khai trong
python -m unittest -v test_module85, nhưng cũng có thể được sử dụng từ dòng lệnh. Việc sử dụng dòng lệnh cơ bản là
python -m unittest -v test_module8
Ghi chú
Là một phím tắt,
python -m unittest -v test_module86 tương đương với
python -m unittest -v test_module87. Nếu bạn muốn truyền đối số để kiểm tra khám phá, lệnh phụ
python -m unittest -v test_module88 phải được sử dụng rõ ràng
Lệnh phụ
python -m unittest -v test_module88 có các tùy chọn sau-v, --dài dòng ¶
Báo cáo dài dòng
-s, --thư mục bắt đầu thư mục¶Thư mục để bắt đầu khám phá [
python -m unittest -v test_module90 mặc định]-p, --mẫu mẫu ¶