У меня есть функция
# foo.py
NUM_SHARDS = 10
def get_shard(shard_key: int) -> int
return (shard_key % NUM_SHARDS) + 1
Я хочу смоделировать эту функцию так, чтобы при каждом вызове этой функции она возвращала определенное значение.Я пробовал патчить как этот
# test.py
@mock.patch('foo.get_shard', return_value=11)
def testSomething(self, patched_func):
patched_func() # >> 11 ... OK so this is fine but
get_shard(4) # >> 5 .... Original impl being executed
Я хочу глубоко изменить эту функцию, чтобы всегда возвращать это значение, независимо от того, вызывается ли эта функция напрямую из unittest или нет.
Для контекста у меня есть несколько производственных сегментов (10) и один тестовый фрагмент (11).Функция get_shard вызывается многочисленными, и производственная версия функции знает только о 10 шардах.Итак, я хотел бы, чтобы эта функция всегда возвращала 11 (номер фрагмента теста) при выполнении в контексте модульного теста.