Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra đơn vị bằng Unittest trong Python


Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Kiểm tra đơn vị bằng cách sử dụng đơn nhất mô-đun tích hợp sẵn. Kiểm thử đóng một vai trò quan trọng trong phát triển phần mềm. Bạn sẽ biết các vấn đề trước khi bắt đầu sản xuất.

Chúng ta sẽ tìm hiểu những điều cơ bản về kiểm tra bằng Python bằng cách sử dụng mô-đun tích hợp có tên unittest . Hãy chuyển sang phần hướng dẫn.

Kiểm thử đơn vị là gì?

Nếu bạn lấy hệ thống đăng nhập làm ví dụ. Mỗi trường trong biểu mẫu đăng nhập là một đơn vị / thành phần. Và kiểm tra chức năng của các đơn vị / thành phần đó được gọi là Kiểm tra đơn vị.

Ví dụ

Hãy xem cấu trúc cơ bản của khung công tác đơn nhất.

# importing unittest module
import unittest
# unittest will test all the methods whose name starts with 'test'
class SampleTest(unittest.TestCase):
   # return True or False
   def test(self):
      self.assertTrue(True)
# running the test
unittest.main()

Đầu ra

Nếu bạn chạy chương trình trên, bạn sẽ nhận được kết quả sau.

----------------------------------------------------------------------
Ran 1 test in 0.001s
OK

2. Phương thức chuỗi kiểm tra

Bây giờ, chúng ta sẽ thử nghiệm các phương thức chuỗi khác nhau với các trường hợp thử nghiệm mẫu. Hãy nhớ rằng tên phương thức phải bắt đầu bằng test.

Hãy xem phần giới thiệu ngắn gọn về từng phương pháp mà chúng tôi sẽ viết.

  • test_string_equality

    • Phương pháp này kiểm tra xem hai chuỗi có bằng nhau hay không bằng cách sử dụng khẳng địnhEqaul phương pháp unittest.TestCase.

  • test_string_case

    • Phương pháp này kiểm tra xem hai trường hợp chuỗi có bằng nhau hay không bằng cách sử dụng khẳng địnhEqaul phương pháp unittest.TestCase.

  • test_is_string_upper

    • Phương thức này kiểm tra xem chuỗi có ở dạng chữ hoa hay không bằng cách sử dụng khẳng định khẳng địnhFalse phương pháp của unittest.TestCase .

Ví dụ

# importing unittest module
import unittest
class TestingStringMethods(unittest.TestCase):
   # string equal
   def test_string_equality(self):
      # if both arguments are equal then it's succes
      self.assertEqual('ttp' * 5, 'ttpttpttpttpttp')
   # comparing the two strings
   def test_string_case(self):
      # if both arguments are equal then it's succes
      self.assertEqual('tutorialspoint'.upper(), 'TUTORIALSPOINT')
   # checking whether a string is upper or not
   def test_is_string_upper(self):
      # used to check whether the statement is True or False
      # the result of expression inside the **assertTrue** must be True to pass the test case
      # the result of expression inside the **assertFalse** must be False to pass the test case
      self.assertTrue('TUTORIALSPOINT'.isupper())
      self.assertFalse('TUTORIALSpoint'.isupper())
# running the tests
unittest.main()

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau nếu tất cả các trường hợp kiểm tra đều vượt qua.

...
----------------------------------------------------------------------
Ran 3 tests in 0.001s
OK

Ví dụ

Chạy chương trình sau để xem kết quả trường hợp thử nghiệm không thành công.

# importing unittest module
import unittest
class TestingStringMethods(unittest.TestCase):

   # string equal
   def test_string_equality(self):
      # if both arguments are equal then it's succes
      self.assertEqual('ttp' * 5, 'ttpttpttpttpttp')
   # comparing the two strings
   def test_string_case(self):
      # if both arguments are equal then it's succes
      self.assertEqual('tutorialspoint'.upper(), 'TUTORIALSPOINT')
   # checking whether a string is upper or not
   def test_is_string_upper(self):
      # used to check whether the statement is True or False
      # the result of expression inside the **assertTrue** must be True to pass the test case
      # the result of expression inside the **assertFalse** must be False to pass the test case
      self.assertTrue('TUTORIALSPOINt'.isupper())
      self.assertFalse('TUTORIALSpoint'.isupper())
# running the tests
unittest.main()

Đầu ra

Nếu bạn chạy chương trình trên, bạn sẽ nhận được kết quả sau.

======================================================================
FAIL: test_is_string_upper (__main__.TestingStringMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
File "p:/Python Work/Stopwatch/practice.py", line 21, in test_is_string_upper
self.assertTrue('TUTORIALSPOINt'.isupper())
AssertionError: False is not true
----------------------------------------------------------------------
Ran 3 tests in 0.016s
FAILED (failures=1)

Chúng tôi sẽ thông báo không thành công ngay cả khi một trường hợp thử nghiệm không thành công trong số tất cả các trường hợp thử nghiệm.

Kết luận

Nếu bạn có bất kỳ nghi ngờ nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.