Исправление класса, импортируемого с помощью функции импорта - PullRequest
0 голосов
/ 01 ноября 2019

Я хочу исправить класс, импортированный с помощью функции __import__, но не заставить его работать.

class Bar():
  def __init__(self, class_name)
    obj = getattr(__import__(class_name, fromlist=[class_name]), class_name)()

class TestBoard(unittest.TestCase):
  @patch('MyClass', autospec=True)
  def test_serial_construction(self, class_mock):
    Bar('MyClass')  

Класс не проверяется, но когда я заменяю __import__ на реальныйстроительство объекта это работает:

class Bar():
  def __init__(self, class_name)
    obj = MyClass()

Как мне заставить его работать с __import__?

1 Ответ

1 голос
/ 01 ноября 2019

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

def set_object(self):
     self.obj = getattr(__import__(class_name, fromlist=[class_name]), class_name)()
new_method = lambda self: self.obj = 'I didnt import this'
with patch('myclass.set_object', new_method):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...