0
이 예외가 발생하더라도, 그것이 assertRaises 여기 assertRaises : I가 assertRaises를 사용하여 예외를 테스트하고
의해 검출되지 않는 방법의 단위 테스트를하는 동안 KeyError를 예외가 발생되지 않고, 피 시험 방법 :import unittest
import test_exception
class TestExceptions(unittest.TestCase):
"""
test class
"""
def test_process_data(self):
"""
test
:return:
"""
sample = {}
self.assertRaises(KeyError, test_exception.process_data, sample)
if __name__ == '__main__':
unittest.main()
그러나 예상지고 다음 오류로 작동하지 않는 경우 :
def process_data(data):
"""
process output data
:return: dict object
"""
component = dict()
try:
properties = dict()
properties['state'] = data['state']
properties['status'] = data['status']
component['properties'] = properties
except KeyError as e:
print "Missing key '{0}' in the response data".format(str(e))
return component
sample_data = {}
process_data(sample_data)
그리고 테스트 코드는
unittest -p test_test_exception.py
Missing key ''state'' in the response data
Missing key ''state'' in the response data
Failure
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/case.py", line 331, in run
testMethod()
File "/unittest/test_test_exception.py", line 16, in test_process_data
self.assertRaises(KeyError, test_exception.process_data, sample)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/case.py", line 475, in assertRaises
callableObj(*args, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/case.py", line 116, in __exit__
"{0} not raised".format(exc_name))
AssertionError: KeyError not raised
Ran 1 test in 0.001s
FAILED (failures=1)
Process finished with exit code 1
단위 테스트 케이스에 어떤 문제가 있습니까?
예외를 발생시키는 것을 의미하는 예외 블록에있는 것은 아닙니다. –
아니요, 'except'블록은 예외가 "catch"된 것으로 의미가 있지만 발생하지 않은 경우를위한 것입니다. 그것을 제기하거나 처리 할 수있는 선택권이 있습니다. assertRaises()는 특히 그 상승 행동을 검사하고 있습니다. – JacobIRR
오, 좋아, 그럼 우리가 정상적으로 예외를 처리하고 아무것도 인상하지 않으려는 단위 테스트에 가장 좋은 방법은 무엇일까요? –