From cede4e0e122aa29faca2045f0625ba7d5b25a382 Mon Sep 17 00:00:00 2001 From: Y_SAKAI Date: Wed, 17 Aug 2022 10:23:31 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20write=5Fto=5Fstring=E3=83=A1=E3=82=BD?= =?UTF-8?q?=E3=83=83=E3=83=89=E3=81=AE=E3=83=86=E3=82=B9=E3=83=88=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/crm-datafetch/src/converter/converter.py | 2 +- .../tests/converter/test_converter.py | 22 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/ecs/crm-datafetch/src/converter/converter.py b/ecs/crm-datafetch/src/converter/converter.py index ace996ef..e1c01dcd 100644 --- a/ecs/crm-datafetch/src/converter/converter.py +++ b/ecs/crm-datafetch/src/converter/converter.py @@ -72,4 +72,4 @@ class CSVStringConverter: return csv_value except Exception as e: - raise Exception('CSVデータの取得に失敗しました', e) + raise Exception('CSVデータの出力に失敗しました', e) diff --git a/ecs/crm-datafetch/tests/converter/test_converter.py b/ecs/crm-datafetch/tests/converter/test_converter.py index 429a7510..0300381d 100644 --- a/ecs/crm-datafetch/tests/converter/test_converter.py +++ b/ecs/crm-datafetch/tests/converter/test_converter.py @@ -1,6 +1,5 @@ import textwrap from collections import OrderedDict -from unittest import mock import pytest from src.config.objects import TargetObject @@ -106,6 +105,7 @@ class TestCSVStringConverter: "TEST003","test003","","9","10","11","12","テストのため3","2022-06-04 08:50:50","3234567","0"\r\n\ ''' + # expected_valueのインデントが半角スペースと認識されてしまうため、`textwrap.dedent`にて補正 assert actual == textwrap.dedent(expected_value) def test_raise_convert_extract_jsons(self) -> str: @@ -200,7 +200,7 @@ class TestCSVStringConverter: # Expects assert '必要なjsonのデータ成形に失敗しました' in str(e.value) - def test_raise_convert_convert_csv(self) -> str: + def test_raise_convert_convert_to_csv(self) -> str: """ Cases: 一部データのカラム(Id)の不足により、CSV変換で例外が発生すること @@ -292,16 +292,16 @@ class TestCSVStringConverter: # Expects assert 'CSV変換に失敗しました カラム名:[Id] 行番号: [1]' in str(e.value) - @mock.patch('src.converter.converter.CSVStringConverter.create') - def test_raise_convert_csv_string(self, execute_mock) -> str: + def test_raise_convert_write_csv_string(self, monkeypatch) -> str: """ Cases: - 一部データのカラム(Id)の不足により、CSV変換で例外が発生すること + csvデータ出力の、CSVデータ取得で例外が発生すること Arranges: - オブジェクト情報の作成 - データの作成 - 実行日時取得インスタンスの生成 - オブジェクト情報インスタンスの生成 + - csvデータ出力のエラーを発生させるためのモックを準備 Expects: 例外が期待値と一致すること """ @@ -377,15 +377,17 @@ class TestCSVStringConverter: execute_datetime = ExecuteDateTime() target_object = TargetObject(object_info, execute_datetime) + def dummy_method(arg): + raise Exception(e) + + # データ加工のみだと事前の処理によりエラーとなるため、csv出力モジュールをモック化する + monkeypatch.setattr("csv.writer", dummy_method) + # Act csv_string_converter = CSVStringConverter(target_object, data) - execute_mock.side_effect = Exception with pytest.raises(Exception) as e: csv_string_converter.convert() -# actual = csv_string_converter.convert() - # Expects - assert 'CSVデータの取得に失敗しました' in str(e.value) -# assert actual == 'CSVデータの取得に失敗しました' + assert 'CSVデータの出力に失敗しました' in str(e.value)