답변:
unittest.skip
데코레이터를 사용하여 개별 테스트 메서드 또는 클래스를 모두 비활성화 할 수 있습니다 .
@unittest.skip("reason for skipping")
def test_foo():
print('This is foo test case.')
@unittest.skip # no reason needed
def test_bar():
print('This is bar test case.')
다른 옵션은 테스트 건너 뛰기 및 예상 된 실패 문서를 참조하세요 .
@unittest.skip
있으며 잘 작동합니다.
@unittest.skip
는 작동하지 않습니다.
데코레이터를 사용하여 함수를 래핑 할 수있는 테스트를 비활성화하고 googletest 또는 python 단위 테스트가 테스트 케이스를 실행하지 못하도록 할 수 있습니다.
def disabled(f):
def _decorator():
print f.__name__ + ' has been disabled'
return _decorator
@disabled
def testFoo():
'''Foo test case'''
print 'this is foo test case'
testFoo()
산출:
testFoo has been disabled
최신 버전 (2.7-미출시)은 테스트 건너 뛰기 / 비활성화를 지원합니다. . 이 모듈을 가져 와서 기존 Python 설치에서 사용할 수 있습니다. 아마도 작동 할 것입니다.
그 전에는 건너 뛰고 싶은 테스트의 이름 xtest_testname
을test_testname
.
다음은이를 수행하는 빠른 elisp 스크립트입니다. 내 elisp는 약간 녹슬 어서 문제가 생기면 미리 사과드립니다. 테스트되지 않았습니다.
(defun disable_enable_test ()
(interactive "")
(save-excursion
(beginning-of-line)
(search-forward "def")
(forward-char)
(if (looking-at "disable_")
(zap-to-char 1 ?_)
(insert "disable_"))))
단순히 @unittest.SkipTest
테스트 위에 데코레이터를 배치하는 것으로 충분합니다.
unittest.skip
(이유없이) Python 2에서는 오류가 발생하지만 Python 3에서는 오류가 발생하지 않습니다.
질문의 "일시적으로 비활성화 된"부분에 초점을 맞춘 가장 좋은 대답은 사용 사례에 따라 다소 다릅니다. 저를 여기에 가져온 유스 케이스는 함수에 대한 테스트 주도 개발을하고 있다는 것입니다. 이 과정에서 나는 연속적으로 테스트를 작성하고 디버깅을 위해 함수에서 중단 점을 자주 사용합니다. 테스트 실행기를 실행할 때마다 모든 테스트를 실행하면 이미 작동하는 테스트의 중단 지점에서 중단됩니다. 함수 작성을 마치면 모든 테스트가 실행되기를 원하기 때문에 "건너 뛰기"를 추가하거나 테스트 이름을 뭉치는 것은 내가 원하는 것이 아닙니다. "건너 뛰기"를 사용했다면 돌아가서 "건너 뛰기 해제"해야합니다.
내 사용 사례의 경우 솔루션은 테스트 코드가 아니라 테스트 실행기에 있습니다. 나는 pytest를 사용 합니다 . pytest를 사용하면 명령 줄에서 단일 테스트를 쉽게 지정할 수 있습니다.
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(대문자를 값으로 대체하십시오).
나는 그 질문이 python-unitest라는 것을 이해합니다. 나는 그것을 오랫동안 사용하지 않았습니다. pytest와 비슷한 것이 있다면 놀라지 않을 것입니다. 그렇지 않은 경우 pytest로 쉽게 전환 할 수 있습니다. 코드를 수정할 필요가 없습니다. 설치하고 테스트 실행기 명령을 변경하십시오.
또한 PyCharm Pro를 사용합니다. 내 테스트 코드를 보여주는 페이지에서 각 테스트의 정의 옆에 작은 아이콘이 있습니다. 해당 아이콘을 클릭하고 해당 테스트를 개별적으로 실행할 수 있습니다.
@unittest.SkipTest
작동 하지만 작동하지 않습니다@unittest.skip