Пересмешник boto3 Cloudwatch Log клиент - PullRequest
0 голосов
/ 16 апреля 2019

Журнал Cloudwatch - это объект с Группой журналов> Поток журналов> События журнала в AWS.Я пытаюсь написать тесты для этого, но moto mocking вызывает ошибку клиента при применении к boto3.client ('logs').Я смотрю на другие способы издеваться над поведением журнала.Как бы вы написали тест для этой функции?

Например:

    client = boto3.client('logs')
    def get_recent_log_stream_name(logGroupName):
        response = client.describe_log_streams(
            logGroupName=logGroupName,
            orderBy='LastEventTime',
            descending=True,
            limit=1)
         logStreamName = response['logStreams'][0]['logStreamName']
         return logStreamName

1 Ответ

1 голос
/ 17 апреля 2019

Я бы написал тест, используя moto, например:

import boto3
from moto import mock_logs


def get_recent_log_stream_name(logs, logGroupName):
    """Function under test"""
    response = logs.describe_log_streams(
        logGroupName=logGroupName,
        orderBy='LastEventTime',
        descending=True,
        limit=1)
    log_stream_name = response['logStreams'][0]['logStreamName']
    return log_stream_name

@mock_logs
def test_get_recent_log_stream_name():
    """Test function"""
    log_group_name = 'test-group'
    log_stream_name = 'test-stream'
    logs = boto3.client('logs')
    logs.create_log_group(logGroupName=log_group_name)
    logs.create_log_stream(
        logGroupName=log_group_name,
        logStreamName=log_stream_name,
    )
    assert get_recent_log_stream_name(logs, log_group_name) == log_stream_name

test_get_recent_log_stream_name()
...