示例#1
0
def test_that_when_log_it_is_applied_it_returns_the_correct_value():
    mock_logger = MagicMock()
    result = chain(
        5,
        add_two,
        multiply_by_two,
        wrap_with=log_it(mock_logger)
    )

    assert result == 14
示例#2
0
def test_that_validate_and_log_work_together_passed_in_any_order():
    mock_logger = MagicMock()
    validate_and_log = combine(validate_it, log_it(mock_logger))

    @validate_and_log
    def add_four(w: int, x: int, y: int, z: int) -> int:
        return sum([w, x, y, z])

    add_four(1, 2, 3, 4)
    mock_logger.assert_has_calls([
        call('add_four called with args: (1, 2, 3, 4) and kwargs {}'),
    ])
示例#3
0
def test_that_validate_and_log_work_together():
    mock_logger = MagicMock()
    validate_and_log = combine(log_it(mock_logger), validate_it)

    @validate_and_log
    def add_three(x: int, y: int, z: int) -> int:
        return x + y + z

    add_three(1, 2, 3)
    mock_logger.assert_has_calls([
        call('add_three called with args: (1, 2, 3) and kwargs {}'),
    ])
示例#4
0
def test_that_validate_works_when_used_with_log_through_combine():
    mock_logger = MagicMock()
    validate_and_log = combine(log_it(mock_logger), validate_it)

    @validate_and_log
    def add_three(x: int, y: int, z: int) -> int:
        return x + y + z

    with pytest.raises(TypeError) as exception_info:
        add_three(1, 2, '3')

    assert exception_info.value.args[
        0] == "add_three expects type <class 'int'> for arg z but received value 3 with type of <class 'str'>"
示例#5
0
def test_that_log_it_logs_input_and_output_correctly():
    mock_logger = MagicMock()
    result = chain(5, add_two, multiply_by_two, wrap_with=log_it(mock_logger))

    mock_logger.assert_has_calls([
        call('add_two called with args: (5,) and kwargs {}'),
        call('add_two returned result 7'),
        call(
            'unknown function name; probably a lambda or partially applied function... '
            'called with args: (7,) and kwargs {}'),
        call(
            'unknown function name; probably a lambda or partially applied function... returned result 14'
        )
    ])
示例#6
0
def test_that_log_it_logs_input_and_output_correctly():
    mock_logger = MagicMock()
    result = chain(
        5,
        add_two,
        multiply_by_two,
        wrap_with=log_it(mock_logger)
    )

    mock_logger.assert_has_calls(
        [
            call('add_two called with args: (5,) and kwargs {}'),
            call('add_two returned result 7'),
            call('unknown function name; probably a lambda or partially applied function... '
                 'called with args: (7,) and kwargs {}'),
            call('unknown function name; probably a lambda or partially applied function... returned result 14')
        ])
示例#7
0
def test_that_input_and_output_string_can_be_changed():
    mock_logger = MagicMock()
    result = chain(
        5,
        add_two,
        multiply_by_two,
        wrap_with=log_it(mock_logger,
                         input_string="{func_name}; {args}; {kwargs}",
                         output_string='{func_name}; {result}')
    )

    mock_logger.assert_has_calls(
        [
            call('add_two; (5,); {}'),
            call('add_two; 7'),
            call('unknown function name; probably a lambda or partially applied function...; (7,); {}'),
            call('unknown function name; probably a lambda or partially applied function...; 14')
        ])
示例#8
0
def test_that_internal_log_decorator_can_accept_an_arbitary_name_for_a_function():
    """
    This is a test for an internal only API
    """
    mock_logger = MagicMock()
    dec = log_it(mock_logger)

    def will_not_use_this_name(x: int, y: int) -> int:
        return x + y

    interal_decorator = dec(will_not_use_this_name, __name="arbitrary_func_name")
    interal_decorator(1, 2)

    mock_logger.assert_has_calls(
        [
            call('arbitrary_func_name called with args: (1, 2) and kwargs {}'),
            call('arbitrary_func_name returned result 3')
        ]
    )
示例#9
0
def test_that_internal_log_decorator_can_accept_an_arbitary_name_for_a_function(
):
    """
    This is a test for an internal only API
    """
    mock_logger = MagicMock()
    dec = log_it(mock_logger)

    def will_not_use_this_name(x: int, y: int) -> int:
        return x + y

    interal_decorator = dec(will_not_use_this_name,
                            __name="arbitrary_func_name")
    interal_decorator(1, 2)

    mock_logger.assert_has_calls([
        call('arbitrary_func_name called with args: (1, 2) and kwargs {}'),
        call('arbitrary_func_name returned result 3')
    ])
示例#10
0
def test_that_input_and_output_string_can_be_changed():
    mock_logger = MagicMock()
    result = chain(5,
                   add_two,
                   multiply_by_two,
                   wrap_with=log_it(
                       mock_logger,
                       input_string="{func_name}; {args}; {kwargs}",
                       output_string='{func_name}; {result}'))

    mock_logger.assert_has_calls([
        call('add_two; (5,); {}'),
        call('add_two; 7'),
        call(
            'unknown function name; probably a lambda or partially applied function...; (7,); {}'
        ),
        call(
            'unknown function name; probably a lambda or partially applied function...; 14'
        )
    ])
示例#11
0
def test_that_when_log_it_is_applied_it_returns_the_correct_value():
    mock_logger = MagicMock()
    result = chain(5, add_two, multiply_by_two, wrap_with=log_it(mock_logger))

    assert result == 14