feat: テスト改善

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2023-04-11 11:36:32 +09:00
parent 92b7343216
commit 16b291d3a6
3 changed files with 52 additions and 46 deletions

View File

@ -58,9 +58,9 @@ class TestComAlmaMapper:
self.db.execute(delete_sql, delete_parameter)
# Act
for i, line in enumerate(test_dat_file, start=1):
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_alma_mapper.ComAlmaMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_alma_mapper.ComAlmaMapper, f'{i}行目:マッパークラスが期通りか'
assert type(sut) is com_alma_mapper.ComAlmaMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
@ -73,12 +73,14 @@ class TestComAlmaMapper:
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, line_number=i, ignore_col_name=ignore_columns)
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{i}行目:{actual_col_name}が、期待値以降であること'
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
def test_update_record(self):
"""
@ -111,9 +113,9 @@ class TestComAlmaMapper:
self.db.execute(insert_sql, insert_parameter)
# Act
for i, line in enumerate(test_dat_file, start=1):
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_alma_mapper.ComAlmaMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_alma_mapper.ComAlmaMapper, f'{i}行目:マッパークラスが期通りか'
assert type(sut) is com_alma_mapper.ComAlmaMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
@ -125,15 +127,17 @@ class TestComAlmaMapper:
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, line_number=i, ignore_col_name=ignore_columns)
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
if expect_row[expect_col_name] is None:
assert actual_row[actual_col_name] is None, f'{i}行目:{actual_col_name}が、登録されていないこと'
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
else:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{i}行目:{actual_col_name}が、期待値以降であること'
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
def test_logical_delete(self):
"""
@ -166,9 +170,9 @@ class TestComAlmaMapper:
self.db.execute(insert_sql, insert_parameter)
# Act
for i, line in enumerate(test_dat_file, start=1):
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_alma_mapper.ComAlmaMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_alma_mapper.ComAlmaMapper, f'{i}行目:マッパークラスが期通りか'
assert type(sut) is com_alma_mapper.ComAlmaMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
@ -180,12 +184,14 @@ class TestComAlmaMapper:
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, line_number=i, ignore_col_name=ignore_columns)
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
if expect_row[expect_col_name] is None:
assert actual_row[actual_col_name] is None, f'{i}行目:{actual_col_name}が、登録されていないこと'
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
else:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{i}行目:{actual_col_name}が、期待値以降であること'
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'

View File

@ -59,9 +59,9 @@ class TestComHamtecMapper:
self.db.execute(delete_sql, delete_parameter)
# Act
for i, line in enumerate(test_dat_file, start=1):
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_hamtec_mapper.ComHamtecMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_hamtec_mapper.ComHamtecMapper, f'{i}行目:マッパークラスが期通りか'
assert type(sut) is com_hamtec_mapper.ComHamtecMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
@ -74,12 +74,14 @@ class TestComHamtecMapper:
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, line_number=i, ignore_col_name=ignore_columns)
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
line_number = 0
# 動的日付項目の個別確認
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{i}行目:{actual_col_name}が、期待値以降であること'
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
def test_update_record(self):
"""
@ -112,9 +114,9 @@ class TestComHamtecMapper:
self.db.execute(insert_sql, insert_parameter)
# Act
for i, line in enumerate(test_dat_file, start=1):
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_hamtec_mapper.ComHamtecMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_hamtec_mapper.ComHamtecMapper, f'{i}行目:マッパークラスが期通りか'
assert type(sut) is com_hamtec_mapper.ComHamtecMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
@ -126,15 +128,17 @@ class TestComHamtecMapper:
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, line_number=i, ignore_col_name=ignore_columns)
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
line_number = 0
# 動的日付項目の個別確認
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
if expect_row[expect_col_name] is None:
assert actual_row[actual_col_name] is None, f'{i}行目:{actual_col_name}が、登録されていないこと'
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
else:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{i}行目:{actual_col_name}が、期待値以降であること'
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
def test_logical_delete(self):
"""
@ -167,9 +171,9 @@ class TestComHamtecMapper:
self.db.execute(insert_sql, insert_parameter)
# Act
for i, line in enumerate(test_dat_file, start=1):
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_hamtec_mapper.ComHamtecMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_hamtec_mapper.ComHamtecMapper, f'{i}行目:マッパークラスが期通りか'
assert type(sut) is com_hamtec_mapper.ComHamtecMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
@ -181,12 +185,14 @@ class TestComHamtecMapper:
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, line_number=i, ignore_col_name=ignore_columns)
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
if expect_row[expect_col_name] is None:
assert actual_row[actual_col_name] is None, f'{i}行目:{actual_col_name}が、登録されていないこと'
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
else:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{i}行目:{actual_col_name}が、期待値以降であること'
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'

View File

@ -55,10 +55,14 @@ def create_db_data_from_csv(file_path: str) -> list[dict]:
converted_value = v
if v == 'NULL':
converted_value = None
if is_valid_date(v) is True:
converted_value = datetime.strptime(v, '%Y/%m/%d')
if is_valid_datetime(v) is True:
if is_valid_date_format(v, '%Y/%m/%d') is True: # YYYY/MM/DD
converted_value = datetime.strptime(v, '%Y/%m/%d').date()
if is_valid_date_format(v, '%Y-%m-%d') is True: # YYYY-MM-DD
converted_value = datetime.strptime(v, '%Y-%m-%d').date()
if is_valid_date_format(v, '%Y/%m/%d %H:%M:%S') is True: # YYYY/MM/DD HH:MM:SS
converted_value = datetime.strptime(v, '%Y/%m/%d %H:%M:%S')
if is_valid_date_format(v, '%Y-%m-%d %H:%M:%S') is True: # YYYY-MM-DD HH:MM:SS
converted_value = datetime.strptime(v, '%Y-%m-%d %H:%M:%S')
row[k] = converted_value
@ -210,12 +214,12 @@ def get_module_name(module: ModuleType) -> str:
return module.__name__.split('.')[-1]
def is_valid_date(date_str: str, date_format='%Y/%m/%d'):
def is_valid_date_format(date_str: str, date_format):
"""日付文字列が、与えられたフォーマットにマッチするかを検査する
Args:
date_str (str): 日付文字列
date_format (str, optional): 日付のフォーマット. Defaults to '%Y/%m/%d'.
date_format (str, optional): 日付のフォーマット
Returns:
_type_: 正しい日付文字列の場合Trueそれ以外はFalse
@ -227,19 +231,7 @@ def is_valid_date(date_str: str, date_format='%Y/%m/%d'):
return False
def is_valid_datetime(date_str: str):
"""日付文字列が、YYYY/MM/DD HH:MM:SSとマッチするかを検査する
Args:
date_str (str): 日付文字列
Returns:
_type_: 正しい日付文字列の場合Trueそれ以外はFalse
"""
return is_valid_date(date_str, '%Y/%m/%d %H:%M:%S')
def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], line_number: int, ignore_col_name: list = None) -> None:
def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignore_col_name: list = None) -> None:
"""テーブル同士の取得結果突き合わせ
Args:
@ -250,7 +242,9 @@ def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], line_
assert len(actual_rows) == len(expect_rows)
# 1カラムずつ調査
line_number = 0
for actual_row, expect_row in zip(actual_rows, expect_rows):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
# テストメソッド側で個別に確認するものはスキップさせる
if ignore_col_name is not None and actual_col_name in ignore_col_name: