49 lines
2.2 KiB
Python
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)
|