feat: 準備処理でシステム例外以外の例外が発生した場合のテストを追加(parametrizeテスト)。ログ出力時にバグっていたのを修正
This commit is contained in:
parent
f18aeb8d25
commit
a9d8a54fe9
@ -58,7 +58,7 @@ def controller() -> None:
|
|||||||
raise e
|
raise e
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception('E-ERR-02 予期せぬエラーが発生したため、処理を終了します', e)
|
logger.exception(f'E-ERR-02 予期せぬエラーが発生したため、処理を終了します エラー内容: [{e}]')
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
|||||||
@ -20,8 +20,15 @@ EXPECT_PROCESS_RESULT = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class ForTestControllerException(MeDaCaCRMDataFetchException):
|
class ForTestMeDaCaCRMDataFetchException(MeDaCaCRMDataFetchException):
|
||||||
pass
|
def __init__(self, error_id: str, func_name: str, message: str) -> None:
|
||||||
|
super().__init__(error_id, func_name, message)
|
||||||
|
|
||||||
|
|
||||||
|
class ForTestException(Exception):
|
||||||
|
# カスタム例外とインタフェースを合わせるための引数
|
||||||
|
def __init__(self, error_id: str, func_name: str, message: str) -> None:
|
||||||
|
super().__init__(message)
|
||||||
|
|
||||||
|
|
||||||
class TestController:
|
class TestController:
|
||||||
@ -352,27 +359,34 @@ class TestController:
|
|||||||
) in caplog.record_tuples, 'オブジェクト情報.is_skipがFalseのものは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
|
assert generate_log_message_tuple(log_message=f'I-CTRL-20 CRMデータ取得処理を終了します') in caplog.record_tuples
|
||||||
|
|
||||||
def test_raise_prepare_data_fetch_process(self, s3_client, monkeypatch, caplog):
|
@pytest.mark.parametrize(
|
||||||
|
'exception, message',
|
||||||
|
[
|
||||||
|
(ForTestMeDaCaCRMDataFetchException, f'E-ERR-01 [{PRE_JP_NAME}]でエラーが発生したため、処理を終了します'),
|
||||||
|
(ForTestException, 'E-ERR-02 予期せぬエラーが発生したため、処理を終了します エラー内容: [例外発生]')
|
||||||
|
])
|
||||||
|
def test_raise_prepare_data_fetch_process(self, s3_client, monkeypatch, caplog, exception, message):
|
||||||
"""
|
"""
|
||||||
Cases:
|
Cases:
|
||||||
データ取得準備処理でシステム例外が発生した場合、エラーで終了すること
|
1. データ取得準備処理でシステム例外が発生した場合、エラーで終了すること
|
||||||
|
2. データ取得準備処理で想定外の例外が発生した場合、エラーで終了すること
|
||||||
Arranges:
|
Arranges:
|
||||||
- データ取得準備処理でシステム例外が発生するようにする
|
- データ取得準備処理でシステム例外が発生するようにする
|
||||||
Expects:
|
Expects:
|
||||||
- データ取得準備処理で例外が発生すること
|
- データ取得準備処理で例外が発生すること
|
||||||
- データ取得準備処理で発生した例外のログメッセージが出力されていること
|
- データ取得準備処理で発生した例外のログメッセージが出力されていること
|
||||||
"""
|
"""
|
||||||
expect_exception = ForTestControllerException('E-PRE-01', PRE_JP_NAME, '例外発生')
|
expect_exception = exception('E-PRE-01', PRE_JP_NAME, '例外発生')
|
||||||
mock_prepare_data_fetch_process = MagicMock(side_effect=expect_exception)
|
mock_prepare_data_fetch_process = MagicMock(side_effect=expect_exception)
|
||||||
mock_check_object_info_process = MagicMock()
|
mock_check_object_info_process = MagicMock()
|
||||||
with patch('src.controller.prepare_data_fetch_process', mock_prepare_data_fetch_process),\
|
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.check_object_info_process', mock_check_object_info_process):
|
||||||
with pytest.raises(MeDaCaCRMDataFetchException):
|
with pytest.raises(exception):
|
||||||
controller.controller()
|
controller.controller()
|
||||||
assert mock_check_object_info_process.called is False
|
assert mock_check_object_info_process.called is False
|
||||||
assert generate_log_message_tuple(
|
assert generate_log_message_tuple(
|
||||||
log_level=logging.ERROR,
|
log_level=logging.ERROR,
|
||||||
log_message=f'E-ERR-01 [{PRE_JP_NAME}]でエラーが発生したため、処理を終了します'), 'データ取得準備処理で発生した例外のログメッセージが出力されていること'
|
log_message=message.format()) in caplog.record_tuples, 'データ取得準備処理で発生した例外のログメッセージが出力されていること'
|
||||||
|
|
||||||
def test_raise_check_object_info_process(self, s3_client, monkeypatch, caplog):
|
def test_raise_check_object_info_process(self, s3_client, monkeypatch, caplog):
|
||||||
"""
|
"""
|
||||||
@ -406,7 +420,7 @@ class TestController:
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
mock_target_objects = FetchTargetObjects(objects)
|
mock_target_objects = FetchTargetObjects(objects)
|
||||||
mock_target_object_first = ForTestControllerException('E-PRE-01', CHK_JP_NAME, '例外発生')
|
mock_target_object_first = ForTestMeDaCaCRMDataFetchException('E-PRE-01', CHK_JP_NAME, '例外発生')
|
||||||
mock_target_object_second = TargetObject(objects['objects'][1], mock_execute_datetime)
|
mock_target_object_second = TargetObject(objects['objects'][1], mock_execute_datetime)
|
||||||
mock_target_object_third = TargetObject(objects['objects'][2], mock_execute_datetime)
|
mock_target_object_third = TargetObject(objects['objects'][2], mock_execute_datetime)
|
||||||
mock_return_values = [mock_target_object_first, mock_target_object_second, mock_target_object_third]
|
mock_return_values = [mock_target_object_first, mock_target_object_second, mock_target_object_third]
|
||||||
@ -492,7 +506,7 @@ class TestController:
|
|||||||
}, mock_execute_datetime)
|
}, mock_execute_datetime)
|
||||||
mock_prepare_data_fetch_process = MagicMock(return_value=(mock_target_objects, mock_execute_datetime, {}))
|
mock_prepare_data_fetch_process = MagicMock(return_value=(mock_target_objects, mock_execute_datetime, {}))
|
||||||
mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||||
mock_set_datetime_period_process = MagicMock(side_effect=[ForTestControllerException(
|
mock_set_datetime_period_process = MagicMock(side_effect=[ForTestMeDaCaCRMDataFetchException(
|
||||||
'E-DATE-01', DATE_JP_NAME, '例外発生'), mock_last_fetch_datetime, mock_last_fetch_datetime])
|
'E-DATE-01', DATE_JP_NAME, '例外発生'), mock_last_fetch_datetime, mock_last_fetch_datetime])
|
||||||
mock_fetch_crm_data_process = MagicMock(return_value=[{}])
|
mock_fetch_crm_data_process = MagicMock(return_value=[{}])
|
||||||
mock_backup_crm_data_process = MagicMock()
|
mock_backup_crm_data_process = MagicMock()
|
||||||
@ -569,7 +583,7 @@ class TestController:
|
|||||||
mock_prepare_data_fetch_process = MagicMock(return_value=(mock_target_objects, mock_execute_datetime, {}))
|
mock_prepare_data_fetch_process = MagicMock(return_value=(mock_target_objects, mock_execute_datetime, {}))
|
||||||
mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||||
mock_set_datetime_period_process = MagicMock(return_value=mock_last_fetch_datetime)
|
mock_set_datetime_period_process = MagicMock(return_value=mock_last_fetch_datetime)
|
||||||
mock_fetch_crm_data_process = MagicMock(side_effect=[ForTestControllerException(
|
mock_fetch_crm_data_process = MagicMock(side_effect=[ForTestMeDaCaCRMDataFetchException(
|
||||||
'E-FETCH-01', FETCH_JP_NAME, '例外発生'), {}, {}])
|
'E-FETCH-01', FETCH_JP_NAME, '例外発生'), {}, {}])
|
||||||
mock_backup_crm_data_process = MagicMock()
|
mock_backup_crm_data_process = MagicMock()
|
||||||
mock_convert_crm_csv_data_process = MagicMock()
|
mock_convert_crm_csv_data_process = MagicMock()
|
||||||
@ -646,7 +660,7 @@ class TestController:
|
|||||||
mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||||
mock_set_datetime_period_process = MagicMock(return_value=mock_last_fetch_datetime)
|
mock_set_datetime_period_process = MagicMock(return_value=mock_last_fetch_datetime)
|
||||||
mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
||||||
mock_backup_crm_data_process = MagicMock(side_effect=[ForTestControllerException(
|
mock_backup_crm_data_process = MagicMock(side_effect=[ForTestMeDaCaCRMDataFetchException(
|
||||||
'E-RESBK-01', RESBK_JP_NAME, '例外発生'), None, None])
|
'E-RESBK-01', RESBK_JP_NAME, '例外発生'), None, None])
|
||||||
mock_convert_crm_csv_data_process = MagicMock()
|
mock_convert_crm_csv_data_process = MagicMock()
|
||||||
mock_backup_crm_csv_data_process = MagicMock()
|
mock_backup_crm_csv_data_process = MagicMock()
|
||||||
@ -723,7 +737,7 @@ class TestController:
|
|||||||
mock_set_datetime_period_process = MagicMock(return_value=mock_last_fetch_datetime)
|
mock_set_datetime_period_process = MagicMock(return_value=mock_last_fetch_datetime)
|
||||||
mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
||||||
mock_backup_crm_data_process = MagicMock()
|
mock_backup_crm_data_process = MagicMock()
|
||||||
mock_convert_crm_csv_data_process = MagicMock(side_effect=[ForTestControllerException(
|
mock_convert_crm_csv_data_process = MagicMock(side_effect=[ForTestMeDaCaCRMDataFetchException(
|
||||||
'E-CONV-01', CONV_JP_NAME, '例外発生'), None, None])
|
'E-CONV-01', CONV_JP_NAME, '例外発生'), None, None])
|
||||||
mock_backup_crm_csv_data_process = MagicMock()
|
mock_backup_crm_csv_data_process = MagicMock()
|
||||||
mock_copy_crm_csv_data_process = MagicMock()
|
mock_copy_crm_csv_data_process = MagicMock()
|
||||||
@ -800,7 +814,7 @@ class TestController:
|
|||||||
mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
||||||
mock_backup_crm_data_process = MagicMock()
|
mock_backup_crm_data_process = MagicMock()
|
||||||
mock_convert_crm_csv_data_process = MagicMock()
|
mock_convert_crm_csv_data_process = MagicMock()
|
||||||
mock_backup_crm_csv_data_process = MagicMock(side_effect=[ForTestControllerException(
|
mock_backup_crm_csv_data_process = MagicMock(side_effect=[ForTestMeDaCaCRMDataFetchException(
|
||||||
'E-CSVBK-01', CSVBK_JP_NAME, '例外発生'), None, None])
|
'E-CSVBK-01', CSVBK_JP_NAME, '例外発生'), None, None])
|
||||||
mock_copy_crm_csv_data_process = MagicMock()
|
mock_copy_crm_csv_data_process = MagicMock()
|
||||||
mock_upload_last_fetch_datetime_process = MagicMock()
|
mock_upload_last_fetch_datetime_process = MagicMock()
|
||||||
@ -877,7 +891,7 @@ class TestController:
|
|||||||
mock_backup_crm_data_process = MagicMock()
|
mock_backup_crm_data_process = MagicMock()
|
||||||
mock_convert_crm_csv_data_process = MagicMock()
|
mock_convert_crm_csv_data_process = MagicMock()
|
||||||
mock_backup_crm_csv_data_process = MagicMock()
|
mock_backup_crm_csv_data_process = MagicMock()
|
||||||
mock_copy_crm_csv_data_process = MagicMock(side_effect=[ForTestControllerException(
|
mock_copy_crm_csv_data_process = MagicMock(side_effect=[ForTestMeDaCaCRMDataFetchException(
|
||||||
'E-UPLD-01', UPLD_JP_NAME, '例外発生'), None, None])
|
'E-UPLD-01', UPLD_JP_NAME, '例外発生'), None, None])
|
||||||
mock_upload_last_fetch_datetime_process = MagicMock()
|
mock_upload_last_fetch_datetime_process = MagicMock()
|
||||||
mock_upload_result_data_process = MagicMock()
|
mock_upload_result_data_process = MagicMock()
|
||||||
@ -954,7 +968,7 @@ class TestController:
|
|||||||
mock_convert_crm_csv_data_process = MagicMock()
|
mock_convert_crm_csv_data_process = MagicMock()
|
||||||
mock_backup_crm_csv_data_process = MagicMock()
|
mock_backup_crm_csv_data_process = MagicMock()
|
||||||
mock_copy_crm_csv_data_process = MagicMock()
|
mock_copy_crm_csv_data_process = MagicMock()
|
||||||
mock_upload_last_fetch_datetime_process = MagicMock(side_effect=[ForTestControllerException(
|
mock_upload_last_fetch_datetime_process = MagicMock(side_effect=[ForTestMeDaCaCRMDataFetchException(
|
||||||
'E-UPD-01', UPD_JP_NAME, '例外発生'), None, None])
|
'E-UPD-01', UPD_JP_NAME, '例外発生'), None, None])
|
||||||
mock_upload_result_data_process = MagicMock()
|
mock_upload_result_data_process = MagicMock()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user