Yurakov
Я написал код который работает и копирует содержимое в другую таблицу, теперь я должен сделать тест.
Окей. Значит единственный юнит, который мы можем и должны протестировать это функция copy_to_other_db. Как будем тестировать? Тестируя юнит, мы тестируем только функционал предоставляемый юнитом. Надо ответить на вопрос, что делает юнит и зафиксировать всё остальное, что не отвечает на этот вопрос.
Например, если у нас есть вот такая функция
def calculate_random_squares(n: int) -> List[int]:
return [random.randint(1, 100) ** 2 for i in range(n)]
мы должны зафиксировать результат функции randint чтобы иметь предсказуемый результат и сравнить результат тестируемой функции с заданным, например вот так
@pytest.mark.parametrize("rnd,ln, res", [(2, 2, [4, 4]), (-3, 5, [9, 9, 9, 9, 9]), (1, 0, [])])
def test_calc(rnd, ln, res):
with patch("random.randint", return_value=rnd):
assert calculate_random_squares(ln) == res
И сразу становится очевидным, что ваша функция написана плохо. Почему? Потому что мы не можем её протестировать автотестом. А не можем по нескольким причинам:
1. ваша функция жестко завязана на параметры соединения, мы не можем запустить функцию в другом окружении, например на тестовой базе
2. ваша функция на вопрос, что она делает, дает сразу несколько ответов.