feat: 例外テスト追加。例外を送出するようにコントロール処理修正
This commit is contained in:
parent
6ad684e38b
commit
9b941c1cb3
@ -2,4 +2,7 @@ from src.controller import controller
|
||||
|
||||
"""CRMデータ取得処理のエントリーポイント"""
|
||||
if __name__ == '__main__':
|
||||
exit(controller())
|
||||
try:
|
||||
exit(controller())
|
||||
except Exception:
|
||||
exit(0)
|
||||
|
||||
@ -55,11 +55,11 @@ def controller() -> None:
|
||||
except MeDaCaCRMDataFetchException as e:
|
||||
logger.error(f'E-ERR-01 [{e.func_name}]でエラーが発生したため、処理を終了します')
|
||||
logger.exception(f'{e.error_id} {e}')
|
||||
return 0
|
||||
raise e
|
||||
|
||||
except Exception as e:
|
||||
logger.exception('E-ERR-02 予期せぬエラーが発生したため、処理を終了します', e)
|
||||
return 0
|
||||
raise e
|
||||
|
||||
finally:
|
||||
# ⑦ CRMデータ取得処理終了ログを出力する
|
||||
|
||||
@ -1,10 +1,13 @@
|
||||
import copy
|
||||
import logging
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
from src import controller
|
||||
from src.config.objects import (FetchTargetObjects, LastFetchDatetime,
|
||||
TargetObject)
|
||||
from src.error.exceptions import MeDaCaCRMDataFetchException
|
||||
from src.system_var.constants import PRE_JP_NAME
|
||||
from src.util.execute_datetime import ExecuteDateTime
|
||||
|
||||
from .test_utils.log_message import generate_log_message_tuple
|
||||
@ -33,6 +36,10 @@ EXPECT_PROCESS_RESULT = {
|
||||
}
|
||||
|
||||
|
||||
class ForTestControllerException(MeDaCaCRMDataFetchException):
|
||||
pass
|
||||
|
||||
|
||||
class TestController:
|
||||
@pytest.fixture()
|
||||
def call_all_processes(self, s3_client, monkeypatch, caplog):
|
||||
@ -321,3 +328,52 @@ class TestController:
|
||||
log_message='I-CTRL-14 [Call2_vod__c] CSVデータアップロード処理呼び出し'
|
||||
) in caplog.record_tuples, 'オブジェクト情報.is_skipがFalseのものはCSVアップロード処理のログメッセージが出力されていること'
|
||||
assert generate_log_message_tuple(log_message=f'I-CTRL-20 CRMデータ取得処理を終了します') in caplog.record_tuples
|
||||
|
||||
def test_raise_mock_prepare_data_fetch_process(self, s3_client, monkeypatch, caplog):
|
||||
"""
|
||||
Cases:
|
||||
データ取得準備処理でシステム例外が発生した場合、エラーで終了すること
|
||||
Arranges:
|
||||
- データ取得準備処理でシステム例外が発生するようにする
|
||||
Expects:
|
||||
- データ取得準備処理で例外が発生すること
|
||||
- データ取得準備処理で発生した例外のログメッセージが出力されていること
|
||||
"""
|
||||
# mock_check_object_infos = copy.deepcopy(TEST_OBJECT_INFO_LIST)
|
||||
# mock_check_object_infos['objects'][1]['is_skip'] = True
|
||||
# monkeypatch.setattr(FetchTargetObjects, '_FetchTargetObjects__validate', lambda x: None)
|
||||
# monkeypatch.setattr(TargetObject, '_TargetObject__validate', lambda x: None)
|
||||
# mock_execute_datetime = ExecuteDateTime()
|
||||
# FetchTargetObjects(mock_check_object_infos)
|
||||
# mock_return_values = [
|
||||
# TargetObject(mock_check_object_infos['objects'][0], mock_execute_datetime),
|
||||
# TargetObject(mock_check_object_infos['objects'][1], mock_execute_datetime),
|
||||
# TargetObject(mock_check_object_infos['objects'][2], mock_execute_datetime),
|
||||
# ]
|
||||
expect_exception = ForTestControllerException('E-CHK-01', PRE_JP_NAME, '例外発生')
|
||||
mock_prepare_data_fetch_process = MagicMock(side_effect=expect_exception)
|
||||
mock_check_object_info_process = MagicMock()
|
||||
# mock_set_datetime_period_process = MagicMock()
|
||||
# mock_fetch_crm_data_process = MagicMock()
|
||||
# mock_backup_crm_data_process = MagicMock()
|
||||
# mock_convert_crm_csv_data_process = MagicMock()
|
||||
# mock_backup_crm_csv_data_process = MagicMock()
|
||||
# mock_copy_crm_csv_data_process = MagicMock()
|
||||
# mock_upload_last_fetch_datetime_process = MagicMock()
|
||||
# mock_upload_result_data_process = MagicMock()
|
||||
with patch('src.controller.prepare_data_fetch_process', mock_prepare_data_fetch_process),\
|
||||
patch('src.controller.check_object_info_process', mock_check_object_info_process):
|
||||
# patch('src.controller.set_datetime_period_process', mock_set_datetime_period_process),\
|
||||
# patch('src.controller.fetch_crm_data_process', mock_fetch_crm_data_process),\
|
||||
# patch('src.controller.backup_crm_data_process', mock_backup_crm_data_process),\
|
||||
# patch('src.controller.convert_crm_csv_data_process', mock_convert_crm_csv_data_process),\
|
||||
# patch('src.controller.backup_crm_csv_data_process', mock_backup_crm_csv_data_process),\
|
||||
# patch('src.controller.copy_crm_csv_data_process', mock_copy_crm_csv_data_process),\
|
||||
# patch('src.controller.upload_last_fetch_datetime_process', mock_upload_last_fetch_datetime_process),\
|
||||
# patch('src.controller.upload_result_data_process', mock_upload_result_data_process):
|
||||
with pytest.raises(MeDaCaCRMDataFetchException):
|
||||
controller.controller()
|
||||
assert mock_check_object_info_process.called is False
|
||||
assert generate_log_message_tuple(
|
||||
log_level=logging.ERROR,
|
||||
log_message=f'E-ERR-01 [{PRE_JP_NAME}]でエラーが発生したため、処理を終了します'), 'データ取得準備処理で発生した例外のログメッセージが出力されていること'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user