Day 164データの整合性チェックをテストで担保する
Pythonコード
1def check_data_integrity(data):2 if not isinstance(data, list):3 return False4 for item in data:5 if not isinstance(item, int):6 return False7 return True8 9def test_check_data_integrity():10 # 整合性のあるデータ11 data1 = [1, 2, 3, 4, 5]12 # 整合性のないデータ13 data2 = [1, 2, '3', 4, 5]14 data3 = '12345'15 16 assert check_data_integrity(data1) == True17 assert check_data_integrity(data2) == False18 assert check_data_integrity(data3) == False19 20 print("すべてのテストが成功しました")21 22test_check_data_integrity()
解説
- 行1〜3: データの整合性をチェックする関数 `check_data_integrity` を定義します。この関数は、入力されたデータが整合性のあるものかどうかを判断します。整合性のあるデータとは、すべての要素が整数であるリストです。組み込み関数 `isinstance()` は、オブジェクトが指定されたクラスのインスタンスであるかどうかを判断します。
- 行4〜7: 関数内で、リスト内の各要素をチェックします。もしリスト内の要素が整数でない場合、関数は `False` を返します。
- 行9〜14: テスト用のデータを準備します。`data1` は整合性のあるデータ、`data2` は整合性のないデータ、`data3` はリストではないデータです。
- 行16〜18: `assert` 文を使用して、`check_data_integrity` 関数の戻り値を期待される値と比較します。すべてのテストが成功した場合、"すべてのテストが成功しました" というメッセージが表示されます。組み込み関数 `print()` は、指定された文字列や値を画面に表示する関数です。
- 行20: `test_check_data_integrity` 関数を呼び出して、テストを実行します。
次に試してみよう
- テストデータを追加して、関数の動作を確認してみましょう。
- 関数の戻り値の型を変更して、テストを書き直してみましょう。
- リスト内の要素の型をチェックする以外の条件を追加して、関数を拡張してみましょう。