Например, есть функция multiply, которая по идее должна бы перемножать два аргумента. Выглядит вот так:
def multiply(a, b):
if a == b and a == 2:
return 4
elif a == b and a == 3:
return 9
И есть тест на нее, который еще и будет пройден:
assert(multiply(2, 2) == 4)
assert(multiply(3, 3) == 9)
Но, конечно же, за такую функцию умножения надо по шее давать.
Меня интересует вот что: какие методики вы применяете, когда тестируете свои классы/методы/функции, чтобы гарантировать, что все возможные случаи покрываются тестами — то есть, протестирован достаточный набор входных данных, чтобы утверждать, что прохождение теста гарантирует правильность кода для всех входных данных?