Макетирование импортированных объектов в PythonPython

Программы на Python
Anonymous
Макетирование импортированных объектов в Python

Сообщение Anonymous »

Предположим, есть головная боль с модулем, определяющим объект, который затем импортируется и используется кодом, который я хочу протестировать:

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

# defined in headache/__init__.py

problem = Problem()
затем он импортируется Foo:

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

# this is foo.py

from headache import problem

class Foo:
# uses `problem` object
и по полосам:

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

# this is bar.py

from headache import problem

class Bar:
# uses `problem` object
теперь при тестировании я могу исправить проблему, но я должен сделать это для каждого пользователя проблемы независимо:

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

unittest.mock.patch(target="foo.problem", new=...)
и

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

unittest.mock.patch(target="bar.problem", new=...)
что очень усложняет работу, если у меня много проблем. Есть ли разумный способ исправить проблему один раз, прежде чем она будет импортирована другими модулями?


Подробнее здесь: https://stackoverflow.com/questions/787 ... -in-python

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