program tip

개별 Python 단위 테스트를 일시적으로 비활성화

radiobox 2020. 8. 11. 08:15
반응형

개별 Python 단위 테스트를 일시적으로 비활성화


unittestPython 에서 모듈을 사용할 때 개별 단위 테스트를 일시적으로 비활성화하려면 어떻게해야합니까?


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.')

다른 옵션은 테스트 건너 뛰기 및 예상 된 실패 문서를 참조하세요 .


데코레이터를 사용하여 함수를 래핑 할 수있는 테스트를 비활성화하고 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_testnametest_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테스트 위에 데코레이터를 배치하는 것으로 충분합니다.


밑줄을 사용하여 테스트 케이스 메서드의 이름을 변경했습니다. test_myfunc는 _test_myfunc가됩니다.


문서 2.1은 무시하거나 건너 뛰 방법을 지정하지 않습니다.

일반적으로 필요한 경우 주석을 차단합니다.


질문의 "일시적으로 비활성화 된"부분에 초점을 맞춘 가장 좋은 대답은 사용 사례에 따라 다소 다릅니다. 저를 여기에 가져온 유스 케이스는 함수에 대한 테스트 주도 개발을하고 있다는 것입니다. 이 과정에서 나는 연속적으로 테스트를 작성하고 디버깅을 위해 함수에서 중단 점을 자주 사용합니다. 테스트 실행기를 실행할 때마다 모든 테스트를 실행하면 이미 작동하는 테스트의 중단 지점에서 중단됩니다. "건너 뛰기"를 추가하거나 테스트 이름을 뭉치는 것은 내가 원하는 것이 아닙니다. 함수 작성이 끝나면 모든 테스트가 실행되기를 원하기 때문입니다. "건너 뛰기"를 사용했다면 돌아가서 "건너 뛰기 해제"해야합니다.

내 사용 사례의 경우 솔루션은 테스트 코드가 아니라 테스트 실행기에 있습니다. 나는 pytest를 사용 합니다 . pytest를 사용하면 명령 줄에서 단일 테스트를 쉽게 지정할 수 있습니다.

pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME

(대문자를 값으로 대체하십시오).

나는 그 질문이 python-unitest라는 것을 이해합니다. 나는 그것을 오랫동안 사용하지 않았습니다. pytest와 비슷한 것이 있다면 놀라지 않을 것입니다. 그렇지 않은 경우 pytest로 쉽게 전환 할 수 있습니다. 코드를 수정할 필요가 없습니다. 설치하고 테스트 실행기 명령을 변경하십시오.

또한 PyCharm Pro를 사용합니다. 내 테스트 코드를 보여주는 페이지에서 각 테스트의 정의 옆에 작은 아이콘이 있습니다. 해당 아이콘을 클릭하고 해당 테스트를 개별적으로 실행할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/2066508/disable-individual-python-unit-tests-temporarily

반응형