티스토리 뷰
외부로 공개할 함수나 클래스 등의 코드를 작성하다 보면, 설명을 아주 자세히 붙어야 할 경우가 많이 있다.
심지어는 자세한 설명이나 예제코드조차도 주석으로 자세히 작성해야 할 경우가 많이 있다.
이런 예제코드 조차 테스트 데이터로 쓸수 있게 해주는것이 doctest모듈이다.
아래와 같이 div()함수를 만든후 함수에 대한 설명은 물론 예제들도 주석으로 처리하였다.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | def div(x,y): """ This function is to divide x into y. [examples]
>>> div(1,2) 0.5
>>> div(4,3) 1.3333333333333333
>>> div(-1,4) -0.25
>>> div(5,0) Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> div(5,0) File "<pyshell#7>", line 2, in div return x / y ZeroDivisionError: division by zero """ return x/y
import doctest doctest.testmod() |
아래와 같이 실행을 해보면 주석으로 달아 놓은 부분을 참조해서 testcase가 수행된 것을 알수 있다.
실행결과
C:\> python test_doctest.py -v Trying: div(1,2) Expecting: 0.5 ok Trying: div(4,3) Expecting: 1.3333333333333333 ok Trying: div(-1,4) Expecting: -0.25 ok Trying: div(5,0) Expecting: Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> div(5,0) File "<pyshell#7>", line 2, in div return x / y ZeroDivisionError: division by zero ok 1 items had no tests: __main__ 1 items passed all tests: 4 tests in __main__.div 4 tests in 2 items. 4 passed and 0 failed. Test passed. |
위 예제에서 실행시에 pythoc 뒤에 -v옵션을 준 이유는 doctest의 결과를 살펴보기 위해서이다.
-v옵션이 생략된 경우에는 testcase가 실패한 경우에만 화면에 보여주고 성공한 경우에는 아무것도 보여주지 않는다.
이번에는 함수에 대한 설명이 다른 파일에 있는 경우를 살펴보겟다.
아래와 같이 파이썬 파일 자체에는 함수에 대한 설명이 전혀 없으며, div.txt파일에 설명을 모두 옮겨 놓았다.
다만 testmod대신에 testfile로 어디에 함수에 대한 설명이 있는 알려준다.
ex) div.py : testfile예제 코드
01 02 03 04 05 06 | def div(x,y): return x/y
if __name__ == '__main__': import doctest doctest.testfile('div.txt') |
ex) div.txt : 함수에 대한 설명이 들어있는 파일
This function is to divide x into y
[example] >>> from div import * >>> div(1,2) 0.5
>>> div(4,3) 1.3333333333333333
>>> div(-1,4) -0.25 |
실행결과
C:\>python div.py -v Trying: from div import * Expecting nothing ok Trying: div(1,2) Expecting: 0.5 ok Trying: div(4,3) Expecting: 1.3333333333333333 ok Trying: div(-1,4) Expecting: -0.25 ok 1 items passed all tests: 4 tests in div.txt 4 tests in 1 items. 4 passed and 0 failed. Test passed. |
이전 예제와 보면 주석중에 약간 다른 부분이 있다. 바로 import 구문이다.
주석 초반에 import를 쓰지 않으면 테스트시에 오류가 발생한다. 즉, doctest에서는 어떤 모듈의 테스트인지 모르기 때문에 어떤 모듈을 임포트해서 테스트해야 하는지 명시해 주어야 한다.
참조 : 빠르게 활용하는 파이썬3 프로그래밍
'Python' 카테고리의 다른 글
Python,module pydoc [도움말] (0) | 2016.05.25 |
---|---|
Python,module unittest [단위테스트] (0) | 2016.05.25 |
Python, 웹 서버 만들기 (0) | 2016.05.25 |
Python, 네이버검색 OpenAPI이용하기 (0) | 2016.05.24 |
Python,module socket [소켓통신] (0) | 2016.05.24 |
- Total
- Today
- Yesterday
- activeforeground
- 상수
- 리눅스
- Module
- highlightthickness
- apache
- tkinter
- borderwidth
- vba
- disabledforeground
- Java
- Linux
- Composite Key
- IdClass
- activebackground
- tkinter command & bind [명령어묶기와 사건묶기] Python
- checkbutton
- Private
- command
- onetomany
- indicatoron
- Python
- fetch join
- FetchType
- JPA
- 폼
- 파이썬
- highlightbackground
- ManyToOne
- Excel
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |