feat: ログメッセージの確認ケースを追加
This commit is contained in:
parent
ceba91e33a
commit
b8fd8a477e
@ -1,4 +1,3 @@
|
|||||||
import logging
|
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
@ -7,6 +6,31 @@ from src.config.objects import (FetchTargetObjects, LastFetchDatetime,
|
|||||||
TargetObject)
|
TargetObject)
|
||||||
from src.util.execute_datetime import ExecuteDateTime
|
from src.util.execute_datetime import ExecuteDateTime
|
||||||
|
|
||||||
|
from .test_utils.log_message import generate_log_message_tuple
|
||||||
|
|
||||||
|
TEST_OBJECT_INFO_LIST = {
|
||||||
|
'objects': [
|
||||||
|
{
|
||||||
|
'object_name': 'Account',
|
||||||
|
'upload_file_name': 'Account_YYYYMMDDHHMMSS'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'object_name': 'Contact',
|
||||||
|
'upload_file_name': 'Contact_YYYYMMDDHHMMSS'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'object_name': 'Call2_vod__c',
|
||||||
|
'upload_file_name': 'Call2_vod__c_YYYYMMDDHHMMSS'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPECT_PROCESS_RESULT = {
|
||||||
|
'Account': 'success',
|
||||||
|
'Contact': 'success',
|
||||||
|
'Call2_vod__c': 'success'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class TestController:
|
class TestController:
|
||||||
|
|
||||||
@ -24,26 +48,17 @@ class TestController:
|
|||||||
monkeypatch.setattr(TargetObject, '_TargetObject__validate', lambda x: None)
|
monkeypatch.setattr(TargetObject, '_TargetObject__validate', lambda x: None)
|
||||||
monkeypatch.setattr(LastFetchDatetime, '_LastFetchDatetime__validate', lambda x: None)
|
monkeypatch.setattr(LastFetchDatetime, '_LastFetchDatetime__validate', lambda x: None)
|
||||||
mock_execute_datetime = ExecuteDateTime()
|
mock_execute_datetime = ExecuteDateTime()
|
||||||
mock_target_objects = FetchTargetObjects({
|
mock_target_objects = FetchTargetObjects(TEST_OBJECT_INFO_LIST)
|
||||||
'objects': [
|
mock_target_object_first = TargetObject(TEST_OBJECT_INFO_LIST['objects'][0], mock_execute_datetime)
|
||||||
{
|
mock_target_object_second = TargetObject(TEST_OBJECT_INFO_LIST['objects'][1], mock_execute_datetime)
|
||||||
'object_name': 'Account'
|
mock_target_object_third = TargetObject(TEST_OBJECT_INFO_LIST['objects'][2], mock_execute_datetime)
|
||||||
},
|
mock_return_values = [mock_target_object_first, mock_target_object_second, mock_target_object_third]
|
||||||
{
|
|
||||||
'object_name': 'Contact'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'object_name': 'Call2_vod__c'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
mock_target_object = TargetObject({'object_name': 'Account'}, mock_execute_datetime)
|
|
||||||
mock_last_fetch_datetime = LastFetchDatetime({
|
mock_last_fetch_datetime = LastFetchDatetime({
|
||||||
'last_fetch_datetime_from': '1900-01-01T00:00:00.000Z',
|
'last_fetch_datetime_from': '1900-01-01T00:00:00.000Z',
|
||||||
'last_fetch_datetime_to': '9999-12-31T59:59:59.000Z'
|
'last_fetch_datetime_to': '9999-12-31T59:59:59.000Z'
|
||||||
}, 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(return_value=mock_target_object)
|
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(return_value=[{}])
|
mock_fetch_crm_data_process = MagicMock(return_value=[{}])
|
||||||
mock_backup_crm_data_process = MagicMock()
|
mock_backup_crm_data_process = MagicMock()
|
||||||
@ -121,7 +136,27 @@ class TestController:
|
|||||||
"""
|
"""
|
||||||
call_all_processes()
|
call_all_processes()
|
||||||
# シングルトンなロガーを引き回しているので、rootロガーになる
|
# シングルトンなロガーを引き回しているので、rootロガーになる
|
||||||
assert ('root', logging.INFO, 'I-CTRL-01 CRMデータ取得処理を開始します') in caplog.record_tuples
|
assert generate_log_message_tuple(log_message='I-CTRL-01 CRMデータ取得処理を開始します') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message='I-CTRL-02 データ取得準備処理呼び出し') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message='I-CTRL-03 取得対象オブジェクトのループ処理開始') in caplog.record_tuples
|
||||||
|
for obj in TEST_OBJECT_INFO_LIST['objects']:
|
||||||
|
object_name = obj['object_name']
|
||||||
|
upload_file_name = obj['upload_file_name']
|
||||||
|
assert generate_log_message_tuple(log_message='I-CTRL-05 オブジェクト情報形式チェック処理呼び出し') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-06 [{object_name}]のデータ取得を開始します') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-08 [{object_name}]のデータ取得期間設定処理呼び出し') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-09 [{object_name}]のデータ取得処理呼び出し') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-10 [{object_name}] の出力ファイル名は [{upload_file_name}] となります') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-11 [{object_name}] CRM電文データバックアップ処理呼び出し') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-12 [{object_name}] CSV変換処理呼び出し') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-13 [{object_name}] CSVデータバックアップ処理呼び出し') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-14 [{object_name}] CSVデータアップロード処理呼び出し') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-15 [{object_name}] 前回取得日時ファイル更新処理呼び出し') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-16 [{object_name}] 処理正常終了') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-17 すべてのオブジェクトの処理が終了しました 実行結果:[{EXPECT_PROCESS_RESULT}]') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-18 CRM_取得処理実施結果ファイルアップロード処理開始') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-19 すべてのデータの取得に成功しました') in caplog.record_tuples
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-20 CRMデータ取得処理を終了します') in caplog.record_tuples
|
||||||
|
|
||||||
def test_controller_do_not_call_upload_process_result_process(self, s3_client, monkeypatch, caplog):
|
def test_controller_do_not_call_upload_process_result_process(self, s3_client, monkeypatch, caplog):
|
||||||
"""
|
"""
|
||||||
@ -161,4 +196,5 @@ class TestController:
|
|||||||
mock_prepare_data_fetch_process.assert_called_once(), 'データ取得準備処理が1回のみ実行されること'
|
mock_prepare_data_fetch_process.assert_called_once(), 'データ取得準備処理が1回のみ実行されること'
|
||||||
mock_upload_result_data_process.call_count == 0, '取得処理実施結果アップロード処理が実行されないこと'
|
mock_upload_result_data_process.call_count == 0, '取得処理実施結果アップロード処理が実行されないこと'
|
||||||
# シングルトンなロガーを引き回しているので、rootロガーになる
|
# シングルトンなロガーを引き回しているので、rootロガーになる
|
||||||
assert ('root', logging.INFO, 'I-CTRL-21 処理対象のデータが存在しませんでした') in caplog.record_tuples, '処理対象が存在しない旨を示すログメッセージが出力されていること'
|
assert generate_log_message_tuple(log_message='I-CTRL-21 処理対象のデータが存在しませんでした') in caplog.record_tuples, '処理対象が存在しない旨を示すログメッセージが出力されていること'
|
||||||
|
assert generate_log_message_tuple(log_message=f'I-CTRL-20 CRMデータ取得処理を終了します') in caplog.record_tuples
|
||||||
|
|||||||
7
ecs/crm-datafetch/tests/test_utils/log_message.py
Normal file
7
ecs/crm-datafetch/tests/test_utils/log_message.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"""ログメッセージに関連するテストヘルパー"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
def generate_log_message_tuple(logger_name='root', log_level=logging.INFO, log_message=''):
|
||||||
|
return (logger_name, log_level, log_message)
|
||||||
Loading…
x
Reference in New Issue
Block a user