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

doctest 모듈을 사용하여 Python에서 테스트

<시간/>

독스트링을 알고 있습니다. Python의 함수 및 클래스에 대한 추가 정보를 제공합니다. doctest를 사용하여 기능 테스트에 사용할 수도 있습니다. 기준 치수. doctest 모듈은>>>로 시작하는 코드를 실행하고 예상 출력과 비교합니다.

doctest.로 함수를 작성하려면 아래 단계를 따르세요.

  • doctest 가져오기 모듈.

  • docstring으로 함수를 작성하십시오. 독스트링 내부에 동일한 기능을 테스트하기 위해 다음 두 줄을 작성합니다.

    • >>>function_name(*args).

    • 출력이 예상됩니다.

  • 기능 코드를 작성하십시오.

  • 이제 테스트를 위해 doctest.testmod(name=function_name, verbose=True) 함수를 호출합니다. verbose가 False로 설정되고 모든 테스트가 통과되면 테스트 결과를 볼 수 없습니다. True로 설정하는 것이 좋습니다.

예시

doctest로 간단한 함수를 작성해 봅시다.

# importing the module
import doctest
# function
def numbers_sum(*args) -> int:
   """
   This function returns the sum of all the argumets
   Shell commands for testing
   incoking the function followed by expected output:
   >>> numbers_sum(1, 2, 3, 4, 5)
   15
   >>> numbers_sum(6, 7, 8)
   21
   """
   return sum(args)
# invoking the testmod function
doctest.testmod(name='numbers_sum', verbose=True)

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Trying:
numbers_sum(1, 2, 3, 4, 5)
Expecting:
15
ok
Trying:
numbers_sum(6, 7, 8)
Expecting:
21
ok
1 items had no tests:
numbers_sum
1 items passed all tests:
2 tests in numbers_sum.numbers_sum
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
TestResults(failed=0, attempted=2)

출력을 보면 각 테스트 후에 ok라는 단어가 있습니다. 즉, 예상 출력과 실제 출력이 일치합니다. 출력 끝에서 테스트 결과를 확인할 수 있습니다.

예시

테스트가 실패하면 어떻게 되는지 봅시다. 잘못된 출력으로 동일한 예제를 실행하십시오.

# importing the module
import doctest
# function
def numbers_sum(*args) -> int:
   """
   This function returns the sum of all the argumets
   Shell commands for testing
   incoking the function followed by expected output:
   >>> numbers_sum(1, 2, 3, 4, 5)
   10
   >>> numbers_sum(6, 7, 8) 23
   """ return sum(args)
# invoking the testmod function
doctest.testmod(name='numbers_sum', verbose=True)

출력

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

Trying:
   numbers_sum(1, 2, 3, 4, 5)
Expecting:
   10
**********************************************************************
File "__main__", line 10, in numbers_sum.numbers_sum
Failed example:
   numbers_sum(1, 2, 3, 4, 5)
Expected:
   10
Got:
   15
Trying:
   numbers_sum(6, 7, 8)
Expecting:
   23
**********************************************************************
File "__main__", line 12, in numbers_sum.numbers_sum
Failed example:
   numbers_sum(6, 7, 8)
Expected:
   23
Got:
   21
1 items had no tests:
   numbers_sum
**********************************************************************
1 items had failures:
   2 of 2 in numbers_sum.numbers_sum
2 tests in 2 items.
0 passed and 2 failed.
***Test Failed*** 2 failures.
TestResults(failed=2, attempted=2)

테스트 결과를 보면 2번은 불합격이다. 예상을 확인할 수도 있습니다. 및 실제 출력에 출력합니다.

결론

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