Hướng dẫn assert not equal python - khẳng định không bằng trăn

Mã nguồn: lib/unittest/__ init__.py Lib/unittest/__init__.py

[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.py
7 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.py
7 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 tra

Mộ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.py
7 cung cấp một lớp cơ sở,
python -m unittest -v test_module
0, 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ô -đun
python -m unittest -v test_module
1

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ẫu

Bà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.py
7.

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_module
3.

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ư Python

Mộ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_module
4 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ản

Mô -đun

python -m unittest tests/test_something.py
7 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_module
6. 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_module
7. 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_module
8 để kiểm tra kết quả dự kiến;
python -m unittest -v test_module
9 hoặc
cd project_directory
python -m unittest discover
0 để xác minh một điều kiện; hoặc
cd project_directory
python -m unittest discover
1 để 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 discover
2 để 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 discover
3 và
cd project_directory
python -m unittest discover
4 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 discover
5 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 discover
6 cho tập lệnh kiểm tra của bạn sẽ hướng dẫn
cd project_directory
python -m unittest discover
5 để 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.py
7 đượ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 discover
9 mặc định], hiện không bị phản đối.The behavior of returning a value from a test method [other than the default
cd project_directory
python -m unittest discover
9 value], is now deprecated.

Giao diện dòng lệnh

Mô -đ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 và
python -m unittest discover -s project_directory -p "*_test.py"
python -m unittest discover project_directory "*_test.py"
9 đã được thêm vào.The command-line options
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/  

Bài Viết Liên Quan

Chủ Đề