prosource

개별 Python 장치 테스트를 일시적으로 사용하지 않도록 설정

probook 2023. 6. 12. 21:35
반응형

개별 Python 장치 테스트를 일시적으로 사용하지 않도록 설정

사용 시 개별 장치 테스트를 일시적으로 비활성화하는 방법은 무엇입니까?unittest파이썬의 모듈?

장식자를 사용하여 개별 테스트 방법 또는 클래스를 모두 비활성화할 수 있습니다.

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

다른 옵션은 테스트 건너뛰기예상 실패에 대한 문서를 참조하십시오.

데코레이터를 사용하여 함수를 래핑할 수 있는 테스트를 비활성화하고 테스트 케이스를 실행하기 위해 Google 테스트 또는 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

단순 배치@unittest.SkipTest시험 위의 장식기로 충분합니다.

최신 버전(2.7 - 미공개)에서는 이와 같이 테스트 건너뛰기/사용함을 지원합니다.이 모듈을 가져와서 기존 Python 설치에서 사용할 수 있습니다.아마 효과가 있을 겁니다.

이전에는 건너뛰고 싶은 테스트의 이름을 다음으로 바꾸곤 했습니다.xtest_testnametest_testname.


이를 위한 빠른 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_"))))

나는 단지 밑줄이 있는 테스트 케이스 메소드의 이름을 바꿉니다: test_myfunc는 _test_myfunc가 됩니다.

2.1용 문서에서는 무시 또는 건너뛰기 방법을 지정하지 않습니다.

보통은 필요할 때 댓글을 차단합니다.

질문의 "일시적으로 사용할 수 없는" 부분에 초점을 맞추면 최상의 답변은 사용 사례에 따라 다소 달라집니다.여기까지 오게 된 활용 사례는 제가 어떤 기능에 대한 테스트 기반 개발을 하고 있다는 것입니다.이 과정에서 저는 테스트를 연속적으로 작성하고 디버깅을 위해 함수의 중단점을 자주 사용합니다.테스트 러너를 실행할 때마다 모든 테스트를 실행하면 이미 작동하는 테스트를 위해 중단점에서 중단하게 됩니다."건너뛰기"를 추가하거나 테스트 이름을 입력하지 않는 것은 제가 원하는 것이 아닙니다. 함수 작성을 마치면 모든 테스트가 실행되기 때문입니다.만약 제가 "건너뛰기"를 사용한다면, 저는 돌아가서 "건너뛰기"를 해야 할 것입니다.

저의 사용 사례에서 해결책은 테스트 코드가 아닌 테스트 러너에 있습니다.는 파이테스트를 사용합니다.pytest를 사용하면 명령줄에서 단일 테스트를 쉽게 지정할 수 있습니다.

pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME

(캡을 값으로 바꿉니다.)

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

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

다른 옵션은 예외를 제기하는 것입니다.unittest.SkipTest("Resason for skipping")

개별 테스트/클래스를 건너뛰도록 표시하지 않고 전체 파일을 건너뛰려는 경우 관련성이 있을 수 있습니다.장소만

import unittest

raise unittest.SkipTest()

파일 위에 있습니다. (또는 생략해야 하는 내부 테스트)

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

반응형