KiprisAPI/test_main.py

49 lines
2.2 KiB
Python

import unittest
from unittest.mock import patch
from src.kipo_api_client import KipoApiClient, KipoApiClientError
class TestKipoApiClient(unittest.TestCase):
def setUp(self):
apikey = '''X9Tz3JqC%2FJcCwxnNewA6qdloIN6QFIitVBgS1a2KVDYk1AmddaDTvzr6%2Bt3dyLZV3gh2TPXdNhxsRQwaKP673Q%3D%3D'''
self.client = KipoApiClient(apikey)
def test_search_patents_successful(self):
# 예상되는 성공적인 응답을 시뮬레이션합니다.
xml_response = '''
<OpenAPI_ServiceResponse>
<item>
<registerStatus>1000319440000</registerStatus>
<inventionTitle>회전체의센서와센서의엔코더</inventionTitle>
<ipcNumber>G01D 5/00</ipcNumber>
...
</item>
</OpenAPI_ServiceResponse>'''.encode('utf-8') # 문자열을 UTF-8로 인코딩
with patch('requests.get') as mocked_get:
mocked_get.return_value.status_code = 200
mocked_get.return_value.content = xml_response
response = self.client.search_patents('view', '0', True, True)
self.assertEqual(len(response), 1)
self.assertEqual(response[0]['inventionTitle'], '회전체의센서와센서의엔코더')
def test_handle_error(self):
# 에러 상황을 시뮬레이션하여 에러 처리를 테스트합니다.
xml_response = '''
<OpenAPI_ServiceResponse>
<cmmMsgHeader>
<errMsg>서비스 오류</errMsg>
<returnAuthMsg>등록되지 않은 서비스키 오류</returnAuthMsg>
<returnReasonCode>30</returnReasonCode>
</cmmMsgHeader>
</OpenAPI_ServiceResponse>'''.encode('utf-8') # 문자열을 UTF-8로 인코딩
with patch('requests.get') as mocked_get:
mocked_get.return_value.status_code = 200
mocked_get.return_value.content = xml_response
with self.assertRaises(KipoApiClientError) as context:
self.client.search_patents('view', '0', True, True)
self.assertIn('등록되지 않은 서비스키 오류', str(context.exception))
if __name__ == '__main__':
unittest.main(verbosity=2)