Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 Unittest를 사용한 단위 테스트


이 튜토리얼에서는 단위 테스트에 대해 알아볼 것입니다. unittest 사용 내장 모듈. 테스트는 소프트웨어 개발에서 중요한 역할을 합니다. 프로덕션 자체로 이동하기 전에 문제를 알 수 있습니다.

unittest라는 내장 모듈을 사용하여 Python에서 테스트하는 기본 사항을 배웁니다. . 튜토리얼을 시작하겠습니다.

단위 테스트란 무엇입니까?

로그인 시스템을 예로 들면. 로그인 양식의 각 필드는 단위/구성 요소입니다. 그리고 이러한 단위/구성요소 기능을 테스트하는 것을 단위 테스트라고 합니다.

예시

unittest 프레임워크의 기본 구조를 살펴보자.

# 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()

출력

위의 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

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

2.문자열 메서드 테스트

이제 샘플 테스트 케이스를 사용하여 다양한 문자열 메서드를 테스트할 것입니다. 메소드 이름은 test.로 시작해야 합니다.

우리가 작성할 각 메소드에 대한 간략한 소개를 살펴보겠습니다.

  • test_string_equality

    • 이 메서드는 assertEqaul을 사용하여 두 문자열이 같은지 여부를 테스트합니다. unittest.TestCase. 메소드

  • test_string_case

    • 이 메서드는 assertEqaul을 사용하여 두 문자열 케이스가 동일한지 여부를 테스트합니다. unittest.TestCase. 메소드

  • test_is_string_upper

    • 이 메소드는 assertTrue를 사용하여 문자열이 대문자인지 여부를 테스트합니다. 및 assertFalse unittest.TestCase 메소드 .

예시

# 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()

출력

위의 코드를 실행하면 모든 테스트 케이스를 통과하면 다음과 같은 결과를 얻을 수 있습니다.

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

예시

다음 프로그램을 실행하여 실패한 테스트 케이스 출력을 확인하세요.

# 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()

출력

위의 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

======================================================================
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)

전체 테스트 케이스 중 하나의 테스트 케이스가 실패해도 실패 메시지를 표시합니다.

결론

튜토리얼에 의문점이 있으면 댓글 섹션에 언급하세요.