pytest mocker unittest.mock parametrize

x·2024년 1월 16일
0

pytest

목록 보기
4/6

@patch("app.main.utils.time.Time.get_now", return_value=datetime(9999, 1, 18))
def test_mocking(mock_get_now):
    from app.main.utils.time import Time

    assert Time.get_now() == datetime(9999, 1, 18)


def test_mocking2(mocker):
    from app.main.utils.time import Time

    mocker.patch("app.main.utils.time.Time.get_now", return_value=datetime(9999, 1, 18))
    assert Time.get_now() == datetime(9999, 1, 18)


# parametrize test
@pytest.mark.parametrize(
    "obj, return_value", [("app.main.utils.time.Time.get_now", datetime(9999, 1, 18))]
)
def test_parametrize_mock(obj, return_value, mocker):
    from app.main.utils.time import Time

    mocker.patch(obj, return_value=return_value)
    assert Time.get_now() == datetime(9999, 1, 18)


# multiple mock
@pytest.mark.parametrize(
    "mocks",
    [
        (
            [
                ("app.main.utils.time.Time.get_now", datetime(9999, 1, 18)),
                ("app.main.repository.user_repository.UserRepository.get_user", "hi"),
            ]
        )
    ],
)
def test_parametrize_mock2(mocks, mocker):
    from app.main.utils.time import Time
    from app.main.repository.user_repository import UserRepository

    for mock in mocks:
        obj, return_value = mock
        if obj and return_value:
            mocker.patch(obj, return_value=return_value)

    assert Time.get_now() == datetime(9999, 1, 18)
    assert UserRepository().get_user() == "hi"

0개의 댓글