단위 테스트에서 메서드가 sys.exit()를 호출한다고 주장할 수 있습니까?
가끔 호출하는 Python 2.7 메소드가 있습니다.
sys.exit(1)
올바른 조건이 충족되면 이 코드 라인이 호출되는지 확인하는 단위 테스트가 가능합니까?
네.sys.exit
인상SystemExit
다음을 통해 확인할 수 있습니다.
with self.assertRaises(SystemExit):
your_method()
의 인스턴스SystemExit
속성이 있습니다.code
제안된 종료 상태로 설정되고 컨텍스트 관리자가 반환합니다.assertRaises
탐지된 예외 인스턴스가 다음과 같습니다.exception
따라서 종료 상태를 쉽게 확인할 수 있습니다.
with self.assertRaises(SystemExit) as cm:
your_method()
self.assertEqual(cm.exception.code, 1)
sys.exit 설명서:
Python에서 종료합니다.이는 다음을 증가시킴으로써 구현됩니다.
SystemExit
예외...외부 레벨에서 출구 시도를 차단할 수 있습니다.
여기 완벽한 작동 예가 있습니다.파벨의 훌륭한 답변에도 불구하고 제가 이 문제를 해결하는 데 시간이 좀 걸렸기 때문에 도움이 되기를 바라며 여기에 포함합니다.
import unittest
from glf.logtype.grinder.mapping_reader import MapReader
INCOMPLETE_MAPPING_FILE="test/data/incomplete.http.mapping"
class TestMapReader(unittest.TestCase):
def test_get_tx_names_incomplete_mapping_file(self):
map_reader = MapReader()
with self.assertRaises(SystemExit) as cm:
tx_names = map_reader.get_tx_names(INCOMPLETE_MAPPING_FILE)
self.assertEqual(cm.exception.code, 1)
"예외 테스트"에 대한 Python Unit Testing 문서 검색에서 귀하의 질문에 대한 답을 찾았습니다.예제를 사용하여 단위 테스트는 다음과 같습니다.
self.assertRaises(SystemExit, your_function, argument 1, argument 2)
함수를 테스트하는 데 필요한 모든 인수를 포함해야 합니다.
Pavel의 훌륭한 답변에 대한 추가적인 참고 사항으로, 테스트 중인 기능에 특정 상태가 제공되는지 확인할 수도 있습니다.예를 들어, 만약your_method()
다음을 포함했습니다.sys.exit("Error")
구체적으로 "오류"를 테스트할 수 있습니다.
with self.assertRaises(SystemExit) as cm:
your_method()
self.assertEqual(cm.exception, "Error")
언급URL : https://stackoverflow.com/questions/15672151/is-it-possible-for-a-unit-test-to-assert-that-a-method-calls-sys-exit
'programing' 카테고리의 다른 글
PHP를 사용하여 이메일 주소가 실제인지 또는 유효한지 확인하는 방법 (0) | 2023.07.25 |
---|---|
동일한 테이블의 여러 열에 대한 SQL (0) | 2023.07.25 |
JetBrain의 DataGrip은 PL/SQL 개발을 지원합니까? (0) | 2023.07.25 |
PowerShell 이 용어는 cmdlet 함수 스크립트 파일 또는 작동 가능한 프로그램으로 인식되지 않습니다. (0) | 2023.07.25 |
Node.js에서 가져오기: "ES 모듈을 로드하려면 가져오기를 사용해야 함" 오류 (0) | 2023.07.25 |