【AWS】Cloud9上でITテスト
1. 使用するサービス
(AWS)
- Cloud9
2. 使用する言語
3.概要
まず、ここで言う結合テストの目的としては、Cloud9上の関数をAWSのサービス、Lambdaとしてデプロイした後の疎通確認として位置付けます。テストの内容も単体テストと同じです。違いとしては仮想的なLambdaか実際にデプロイしたLambdaに対してテストをするかになります。
実装面に関しては違いのある箇所のみ記載します。
後は前回参照です。
buffalokusojima.hatenablog.com
4. 実装
import unittest import json import csv import logging import os import boto3 lambda_client = boto3.client('lambda') logger = logging.getLogger() logger.setLevel(logging.INFO) def readTestData(csvFile): test_list = [] with open(csvFile, encoding="UTF-8") as f: for line in csv.DictReader(f): del line["備考"] test_list.append(line) return test_line class TestHandlerClass(unittest.TestCase): def test_response(self): logger.info("Hello Lambda Test") test_file_path = "../Data/hello.csv" test_file_path = os.path.join(os.path.dirname(__file__), test_file_path) test_list = readTestData(test_file_path) logger.info(test_list) for test in test_list: result = lambda_client.invoke(FunctionName=Project+"-"+Stage+"-HelloWorldFunction") self.assertEqual(result['statusCode'], 200) result = result['Payload'].read() result = json.loads(result) self.assertEqual(result['statusCode'], 200) self.assertEqual(json.loads(result['body']), test) self.assertEqual(result['headers'], {"Content-type": "application/json"}) if __name__ == '__mian__': unittest.main()
5. おわりに
これでデプロイ後のLambdaに対してテストが自動で行えます。
主に、単体テストでロジックの確認で、結合テストではRoleやタイムアウト時間などの確認になります。