Hướng dẫn python unittest print statement - câu lệnh in đơn nhất python
1 Show New! Save questions or answers and organize your favorite content. Learn more. I am new to writing python unit tests, Please help me to write test cases for the below function which is having only print statements instead of return statements.
asked Sep 2, 2021 at 19:40Sep 2, 2021 at 19:40
3 You can use contextlib's
answered Sep 2, 2021 at 19:50Sep 2, 2021 at 19:50
ti7ti7ti7 13.7k6 gold badges32 silver badges60 bronze badges6 gold badges32 silver badges60 bronze badges 2 Kết quả thực hiện: >python -m unittest test_list_value.py.----------------------------------------------------------------------Ran 1 test in 0.000s Ví dụ 3: Xử lý chuỗi palindromeChuỗi palindrome có dạng: Chuỗi lớn hơn 1, Không phân biệt chữ hoa, thường, viết xuôi hay ngược đều thu được kết quả như nhau.Hãy viết chương trình kiểm tra một chuỗi có phải là chuỗi palindrome không ? Dữ liệu mẫu:Input: test_str = ”Civic”Output: True Input: test_str = ”Noon”Output: True Input: test_str = ” Python”Output: FalseCode của bài toán: Unitest của bài toán: Thực hiện test bài test:> python -m unittest test_palindrome.----------------------------------------------------------------------Ran 1 test in 0.000s 4. Một số yêu cầu với unit-test.
5. Lợi ích của unit-test.
Cách sử dụng unit test trong Python.Với mỗi ngôn ngữ lập trình lại có các công cụ, thư viện khác nhau để thực hiện viết unit-test. Trong Python, có thể sử dụng pytest và unittest để viết các unit-test. Do unittest có độ thông dụng nhiều hơn nên bài viết sau đây của tôi sẽ tập trung vào module unittest trong Python. 1. Giới thiệu về unittest.Trong lập trình thì cách giới thiệu nhanh nhất cho một module/thư viện chính là ... lập trình dựa trên các đặc tính của module/thư viên đó. Sau đây là một ví dụ nhỏ về unitest. Các bạn hãy tạo một file có tên simple_unittest.py và gõ vào đoạn code như dưới đây.
Từ màn hình terminal, thực hiện chạy file trên, chúng ta thu được kết quả: 0 1 2 3 4 1 2 3 4 5 6 7 8 9 0 1 6 7 8 9 0 1 7 3 3 4Bây giờ chúng ta cùng nhau phân tích một chút về ví dụ trên. 5 --> Có nghĩa là module unittest là module đã được cài đặt cùng với gói cài đặt của Python. 6: --> module unittest cung cấp một class unittest.TestCase để các class khác thực hiện kế thừa. 7:, def test_isupper(self):, def test_split(self): --> các function đều bắt đầu bằng test_ 8 --> Để khởi chạy các test case trong một module, cần đặt gọi đến unittest.main() của module đó. unittest.main() thường đặt ở cuối cùng của module (file code). 9 --> Các function dùng để so sánh và raise lên các message thông báo cho kết quả test chính chính xác hay không.Trong trường kết quả test không chính xác, sẽ hiển thị ra bài test không pass được bằng cách trỏ đến dòng code và nguyên nhân gây ra lỗi.Như ví dụ trên, lỗi nằm ở dòng só 14 khi cố tình đặt 0, và messagelỗi cũng chỉ ra đúng dòng lỗi là dòng 14, và nôi dung lỗi cũng rõ ràng 1Như ví dụ trên, lỗi nằm ở dòng só 14 khi cố tình đặt 0, và messagelỗi cũng chỉ ra đúng dòng lỗi là dòng 14, và nôi dung lỗi cũng rõ ràng 12. Một số function trong unit-test thường dùng.2.1. Các function trong unit-test trả về True/False 2--> Trả về True: Nếu giá trị value1 == value2--> Trả về False: nếu value1 != value2--> Trả về True: Nếu giá trị value1 == value2 --> Trả về False: nếu value1 != value2 3--> Trả về True: Nếu giá trị value == True--> Trả về False: nếu value1 == False--> Trả về True: Nếu giá trị value == True --> Trả về False: nếu value1 == False 4--> Trả về True: Nếu giá trị value == False--> Trả về False: nếu value1 == True--> Trả về True: Nếu giá trị value == False --> Trả về False: nếu value1 == True 5 6 6Trả về True: Nếu trong các expressions phát sinh ra lỗi TypeException Trả về False: Nếu trong expressions không phát sinh ra lỗi 2.2. Các function khác
2.3. Các function so sánh các kiểu dữ liệu khác nhau.. Các function so sánh các kiểu dữ liệu khác nhau.
3. Cách chạy unittest.Ở ví dụ phía trên, ngoài cách gọi trực tiếp vào module/file để thực thi, chúng ta có thể gọi unittest từng đơn vị như sau: file để thực thi, chúng ta có thể gọi unittest từng đơn vị như sau: Test cả module:: > ================================================== ==================== FAIL: test_islower (test_simple_unittest.TestStringMethods) ---------------------------------------------------------- -------------------- Traceback (most recent call last): & nbsp;"E:\code_learn\Projects\20201206_python-unitest\python-unittest\source_code\test_simple_unittest.py", line 14, in test_islower self.assertTrue('PYTHON'.islower())self.assertTrue('PYTHON'.islower()) AssertionError: False is not true: False is not true ---------------------------------------------------------- -------------------- Ran 4 tests in 0.001s4 tests in 0.001s FAILED (failures=1)failures=1) & nbsp; > ================================================== ==================== FAIL: test_islower (test_simple_unittest.TestStringMethods) ---------------------------------------------------------- -------------------- Traceback (most recent call last): & nbsp;"E:\code_learn\Projects\20201206_python-unitest\python-unittest\source_code\test_simple_unittest.py", line 14, in test_islower self.assertTrue('PYTHON'.islower())self.assertTrue('PYTHON'.islower()) AssertionError: False is not true: False is not true ---------------------------------------------------------- -------------------- Ran 4 tests in 0.001s4 tests in 0.001s FAILED (failures=1)failures=1) & nbsp; > ---------------------------------------------------------- -------------------- Ran 1 test in 0.000s1 test in 0.000s & nbsp; > ================================================== ==================== FAIL: test_islower (test_simple_unittest.TestStringMethods) ---------------------------------------------------------- -------------------- Traceback (most recent call last): & nbsp;"E:\code_learn\Projects\20201206_python-unitest\python-unittest\source_code\test_simple_unittest.py", line 14, in test_islower self.assertTrue('PYTHON'.islower())self.assertTrue('PYTHON'.islower()) AssertionError: False is not true: False is not true ---------------------------------------------------------- -------------------- Ran 1 test in 0.000s1 test in 0.000s FAILED (failures=1)failures=1) & nbsp;. Một số ví dụ về unittestTest & nbsp; từng & nbsp; class/function & nbsp; trong & nbsp; mô -đun: Viết chương trình tìm nghiệm của phương trình bậc 1: aX + b = 0 Test & nbsp; từng & nbsp; function & nbsp; trong & nbsp; mô -đun ĐƯỢC RỒI 4. & nbsp; một & nbsp; số & nbsp; ví & nbsp;0 và b == 0 -> phương trình vô số nghiệm, trả về ALL Ví & nbsp; dụ & nbsp; 1: & nbs0 và b != 0 -> Phương trình vô nghiệm, trả về NONE & nbsp; viết & nbsp; đơn vị & nbsp; test & nbsp; GIảI & NBSP; THUậT:file first_equation.py
Nếu & nbsp; a & nbsp; == & nbsp; 0 & nbsp; vào
Nếu & nbsp; a & nbsp; == & nbsp; 0 & nbsp; vào & nbsp; Test & nbsp; từng & nbsp; class/function & nbsp; trong & nbsp; mô -đun: Cho 1 chuỗi cho trước, thực hiện tách chuỗi theo các khoảng trắng và trả về một list của các tuple dạng [(số thứ tự, giá trị),…] Test & nbsp; từng & nbsp; function & nbsp; trong & nbsp; mô -đun Output: ĐƯỢC RỒI
Ví & nbsp; dụ & nbsp; 1: & nbs
& nbsp; viết & nbsp; đơn vị & nbsp; test & nbsp; & nbsp; Test & nbsp; từng & nbsp; class/function & nbsp; trong & nbsp; mô -đun Xử lý chuỗi palindrome Test & nbsp; từng & nbsp; function & nbsp; trong & nbsp; mô -đun ĐƯỢC RỒI 4. & nbsp; một & nbsp; số & nbsp; ví & nbsp;
& nbsp; viết & nbsp; đơn vị & nbsp; test & nbsp;
GIảI & NBSP; THUậT:
Nếu & nbsp; a & nbsp; == & nbsp; 0 & nbsp; vào Nếu & nbsp; a & nbsp; == & nbsp; 0 & nbsp; vào & nbsp; Test & nbsp; từng & nbsp; class/function & nbsp; trong & nbsp; mô -đun Test & nbsp; từng & nbsp; function & nbsp; trong & nbsp; mô -đunFAIL --> Đó là lý do tại sao chúng ta cần phải viết unitest. Kết quả fail có nghĩa là chúng ta sẽ phải xem lại phần code chương trình, có thể đã có chỗ nào đó đã bị thay đổi để đưa so với ban đầu khiến cho chương trình hoạt động không được chuẩn xác. KếtTrên đây là một số vấn đề cơ bản khi thực hiện viết unittest cho lập trình Python. Hẹn gặp lại các bạn vào một bài viết chuyên sâu hơn, phân tích kỹ hơn các chiến thuật viết unittest và unittest-mock.Source code chương trình được lưu trên github tại link: https://github.com/quangvinh2986/python-unittest.Cảm ơn các bạn đã theo dõi bài viết. Tài liệu tham khảo: https://docs.python.org/3/library/unittest.html. |