У меня следующая структура:
Код: Выделить всё
├── m1.py
└── m2
└── m3
├── __init__.py
└── m3.py
Код: Выделить всё
from .m3 import *
Код: Выделить всё
def m3func():
print('m3 func is here')
Это работает, и я ожидал, что это сработает:
Код: Выделить всё
import m2.m3
m2.m3.m3func()
Код: Выделить всё
import sys
from unittest.mock import Mock
sys.modules['m2.m3'] = Mock()
import m2.m3 as alias
alias.m3func()
Код: Выделить всё
import sys
from unittest.mock import Mock
sys.modules['m2.m3'] = Mock()
from m2 import m3
m3.m3func()
Код: Выделить всё
import sys
from unittest.mock import Mock
sys.modules['m2.m3'] = Mock()
import m2.m3
m2.m3.m3func()
Код: Выделить всё
m2.m3.m3func()
AttributeError: module 'm2' has no attribute 'm3'
Что еще я не понимаю и есть ли способ исправить последнюю версию, чтобы она не выдавала ошибку AttributeError? В моем примере m2 пуст, но на самом деле я не хочу его полностью заменять, потому что он содержит вещи, которые меня волнуют. Я просто хотел бы настроить таргетинг на m3. Есть ли рекомендация относительно использования такого кода: m2.m3.m3func()?
Подробнее здесь: https://stackoverflow.com/questions/663 ... dule-mocks
Мобильная версия