[PYTHON] 유닛 테스트로 인해 sys.exit ()가 발생했습니다.
PYTHON유닛 테스트로 인해 sys.exit ()가 발생했습니다.
sys.exit ()는 unittest에 의해 호출됩니다. 심지어 가장 간단한 예제도 있습니다. 설치가 엉망이거나 무슨 일이 일어나는지 알 수 없습니다.
IDLE 1.2.2 ==== No Subprocess ====
>>> import unittest
>>>
>>> class Test(unittest.TestCase):
def testA(self):
a = 1
self.assertEqual(a,1)
>>> unittest.main()
option -n not recognized
Usage: idle.pyw [options] [test] [...]
Options:
-h, --help Show this message
-v, --verbose Verbose output
-q, --quiet Minimal output
Examples:
idle.pyw - run default set of tests
idle.pyw MyTestSuite - run suite 'MyTestSuite'
idle.pyw MyTestCase.testSomething - run MyTestCase.testSomething
idle.pyw MyTestCase - run all 'test*' test methods
in MyTestCase
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
unittest.main()
File "E:\Python25\lib\unittest.py", line 767, in __init__
self.parseArgs(argv)
File "E:\Python25\lib\unittest.py", line 796, in parseArgs
self.usageExit(msg)
File "E:\Python25\lib\unittest.py", line 773, in usageExit
sys.exit(2)
SystemExit: 2
>>>
해결법
-
==============================
1.귀하의 예가 제 설치시에도 종료됩니다. 테스트를 실행하고 Python 내에서 변경 사항을 유지하도록 할 수 있습니다.
귀하의 예가 제 설치시에도 종료됩니다. 테스트를 실행하고 Python 내에서 변경 사항을 유지하도록 할 수 있습니다.
unittest.main()
에
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(Test))
더 자세한 정보는 Python Library Reference에서보실 수 있습니다.
-
==============================
2.새로운 Python 2.7 릴리스에서 unittest.main ()에는 새로운 인수가 있습니다.
새로운 Python 2.7 릴리스에서 unittest.main ()에는 새로운 인수가 있습니다.
'exit'가 False로 설정된 경우 unit.est ()는 unittest.main ()을 실행하는 동안 호출되지 않습니다.
-
==============================
3.IDLE에서 unittest.main ()을 실행하지 마십시오. sys.argv에 액세스하려고 시도하고 있으며 IDLE이 시작된 args를 얻고 있습니다. 테스트를 IDLE과 다른 방법으로 실행하거나 자체 Python 프로세스에서 unittest.main ()을 호출하십시오.
IDLE에서 unittest.main ()을 실행하지 마십시오. sys.argv에 액세스하려고 시도하고 있으며 IDLE이 시작된 args를 얻고 있습니다. 테스트를 IDLE과 다른 방법으로 실행하거나 자체 Python 프로세스에서 unittest.main ()을 호출하십시오.
-
==============================
4.unittest.py에 대한 소스 코드를 열어 poptest.py. unittest.main ()은 모든 테스트를 실행 한 후 sys.exit ()을 호출하도록 하드 코딩되어 있습니다. TextTestRunner를 사용하여 프롬프트에서 테스트 스위트를 실행합니다.
unittest.py에 대한 소스 코드를 열어 poptest.py. unittest.main ()은 모든 테스트를 실행 한 후 sys.exit ()을 호출하도록 하드 코딩되어 있습니다. TextTestRunner를 사용하여 프롬프트에서 테스트 스위트를 실행합니다.
-
==============================
5.unittest 모듈을 처음 시도 할 때 테스트가 작동 함을 보여주고 Python 쉘을 종료하지 않는다는 것을 알면 좋을 것입니다. 그러나 이러한 솔루션은 버전에 따라 다릅니다.
unittest 모듈을 처음 시도 할 때 테스트가 작동 함을 보여주고 Python 쉘을 종료하지 않는다는 것을 알면 좋을 것입니다. 그러나 이러한 솔루션은 버전에 따라 다릅니다.
나는 직장에서 Python 2.6을 사용하고 unittest (unittest는 Python 2.7에서 발견 된 unittest 모듈 임)로 import한다.
JoeSkora의 해결책은 그것을 수행하고 반복하는 동안 unittest.main (exit = False)은 Python 2.6의 unittest2에서 작동하지 않습니다.
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(Test))
이를 다양한 구성 객체에 대한 올바른 의미 론적 이름으로 구성 요소 및 기본 인수로 분류하려면 다음을 수행하십시오.
import sys # sys.stderr is used in below default args test_loader = unittest.TestLoader() loaded_test_suite = test_loader.loadTestsFromTestCase(Test) # Default args: text_test_runner = unittest.TextTestRunner(stream=sys.stderr, descriptions=True, verbosity=1) text_test_runner.run(loaded_test_suite)
Python 2.7 이상에서는 다음이 작동합니다.
unittest.main(exit=False)
-
==============================
6.
try: sys.exit() except SystemExit: print('Simple as that, but you should really use a TestRunner instead')
from https://stackoverflow.com/questions/79754/unittest-causing-sys-exit by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 반복적 인 수식으로 순수 Python 프라임 시브 개선하기 (0) | 2018.11.08 |
---|---|
[PYTHON] matplotlib.pyplot / pylab isinteractive ()가 실행되는 동안 ipython을 사용하여 그림을 업데이트하지 않습니다. -pylab [duplicate] (0) | 2018.11.08 |
[PYTHON] 클래스의 모든 메서드를 래핑하는 방법? (0) | 2018.11.08 |
[PYTHON] python urllib2를 사용하여 로그인 용 json 데이터를 보내는 방법 (0) | 2018.11.08 |
[PYTHON] BeautifulSoup - HTML 조각에있는 모든 링크를 수정합니까? (0) | 2018.11.08 |