Издевательство над функцией, когда функция передается в качестве аргументаPython

Программы на Python
Anonymous
Издевательство над функцией, когда функция передается в качестве аргумента

Сообщение Anonymous »

Я пытаюсь написать модульный тест для некоторого кода Python, и у меня возникли трудности с исправлением функции, чтобы она имела фиксированное возвращаемое значение, когда указанная функция вызывается не напрямую, а в качестве аргумента.
В файле1.py:

Код: Выделить всё

def fn_under_test(X):
if X:
getter_fn = fn1()
else:
getter_fn = fn2()

get_all_customers(getter_fn=getter_fn()

def get_all_customers(getter_fn):
return getter_fn()

def fn1():
raise Exception("I will fail")

def fn2():
raise Exception("I will fail")
В тесте у меня есть что-то вроде этого:
test.py

Код: Выделить всё

from django.test import TestCase
from file1 import getAllCustomers

class Tests(TestCase):
def test(self):
patch('file1.fn1',
auto_spec=True
return_value = ['1', '2', '3']
)

result = fn_under_test(X=True)
self.assertEqual(result, ['1', '2', '3']

В этом примере я ожидал вызова фиктивной функции, но вместо этого кажется, что я вызываю реальную функцию, которая в моем случае будет отправлять запросы в сеть и, очевидно, потерпит неудачу. поскольку он работает в среде модульного тестирования.

Подробнее здесь: https://stackoverflow.com/questions/786 ... n-argument

Вернуться в «Python»