Trong bài viết này, chúng ta sẽ tìm hiểu về cơ bản của kiểm thử phần mềm với sự trợ giúp của module unit test có sẵn trong Python 3.x hoặc các phiên bản trước đó. Nó cho phép tự động hóa, chia sẻ mã thiết lập và thoát cho các test, và test độc lập cho mọi framework.
Trong unit test, chúng ta sử dụng nhiều khái niệm hướng đối tượng. Chúng ta sẽ thảo luận về một số khái niệm chính được sử dụng.
Testcase − Là lớp cơ sở đặc thù phản hồi theo một tập hợp đầu vào cho trước. Chúng ta dùng lớp cơ sở của unit test là "TestCase" để triển khai thao tác này.
Testsuite − Dùng để gom các test case lại và thực thi chúng cùng lúc.
Testrunner − Tuân theo thực thi dựa trên kết quả. Nó tham gia hiển thị kết quả sau khi thực thi các tác vụ.
Test fixture − Đóng vai trò là cơ sở đường cơ sở cho các test case trong môi trường liên quan.
Bây giờ hãy xem một ví dụ cơ bản để xem unit testing hoạt động như thế nào.
Ví dụ
import unittest
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('TUTOR'.lower(), 'tutor')
def test_islower(self):
self.assertTrue('tutor'.islower())
self.assertFalse('Tutor'.islower())
if __name__ == '__main__':
unittest.main()
Kết quả
... ----------------------------------------------------------------- Ran 2 tests in 0.000s OK

Ở đây chúng ta kế thừa lớp unit test dưới dạng đơn kế thừa. Ở đây chúng ta dùng các phương thức tích hợp sẵn như assertEqual(), assertTrue() & assertFalse().
assertEqual() dùng để xác thực/so sánh đầu ra với kết quả.
assertTrue() dùng để xác minh điều kiện cho trước có True hay không.
assertFalse() dùng để xác minh điều kiện cho trước có False hay không.
Đầu ra của code trên có thể ở ba dạng:
OK − Chỉ ra rằng tất cả các test tạo ra đã thực thi thành công.
FAIL − Chỉ ra hoặc test case thất bại và ngoại lệ AssertionError được raise.
ERROR − Chỉ ra rằng test raise một ngoại lệ/lỗi.
Chúng ta có thể dùng decorator @unittest.skip(<lý do>).
Ví dụ
import unittest
class TestString(unittest.TestCase):
@unittest.skip("check skipped tests")
def test_upper(self):
self.assertEqual('TUTOR'.lower(), 'tutor')
def test_islower(self):
self.assertTrue('tutor'.islower())
self.assertFalse('Tutor'.islower())
if __name__ == '__main__':
unittest.main()
Kết quả
... ----------------------------------------------------------------- Ran 2 tests in 0.000s OK (skipped=2)
Kết luận
Trong bài viết này, chúng ta đã tìm hiểu về Unit Testing trong Python sử dụng module unittest trong Python 3.x hoặc các phiên bản trước đó.