AWS SecretsManager motoを使用してpytest する方法
secretsmanager motoを使用してのpytest
pytestをする必要があったので検索しましたがあまり日本語がなさそうな雰囲気。。。
別にmoto使用しなくても全てmockにしてしまってもいいけどね。
なんとなく知的好奇心が沸いたので試してみました。
なので記事にしてみました。
必要モジュール
boto3
moto
pytest
実装箇所
import json
import boto3
import logging
# log_level
logging.getLogger().setLevel(logging.INFO)
class SecretsManagerClass:
def __init__(self, secret_name):
logging.info(secret_name)
self.secret_name = secret_name
def _open_boto_session(self):
return boto3.session.Session()
def _create_boto_client(self):
return self._open_boto_session().client(
service_name="secretsmanager", region_name="ap-northeast-1"
)
def get_secrets_info(self):
get_secret_value_response = \
self._create_boto_client().get_secret_value(
SecretId=self.secret_name)
rds_secret = json.loads(get_secret_value_response['SecretString'])
return rds_secret
こんな感じで
pytest箇所
import pytest
import boto3
from moto import mock_secretsmanager
from src.secrets_manager import SecretsManagerClass
class TestGetParameterClass(object):
@pytest.fixture
def create_mocked_secret_manager_connection(self):
with mock_secretsmanager():
yield boto3.session.Session().client(
service_name="secretsmanager", region_name="ap-northeast-1"
)
@pytest.fixture
def create_test_secret(self, create_mocked_secret_manager_connection):
create_mocked_secret_manager_connection.create_secret(
Name="mock_secret",
SecretString="""{"mock_secret_key": "mock_secret_value"}"""
)
def test_get_secret_string(
self, monkeypatch, create_mocked_secret_manager_connection, create_test_secret
):
def get_mocked_secret_manager(*args, **kwargs):
return create_mocked_secret_manager_connection
monkeypatch.setattr(
SecretsManagerClass, "_create_boto_client", get_mocked_secret_manager
)
credential_client = SecretsManagerClass("mock_secret")
assert credential_client.get_secrets_info() == {
"mock_secret_key": "mock_secret_value"
}
使ってない変数とかあるけど、基本を残してるので多用的に使えるかと( ^ω^ )
まあざっとこんな感じ、元の参照した記事は何かもう忘れちまった。。。
けど大体日本語の記事より英語の記事の方が充実してるから英語がいいですよね。
stack overflow(英語版)とか
pytest最近すごく触れる機会が多いので段々と理解が深まってきました。
今日は以上です。
Author And Source
この問題について(AWS SecretsManager motoを使用してpytest する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/fox-girl/items/2bd3a3ea770b01aeff2c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .