У меня возникли проблемы с формулировкой этого вопроса в Google / прошлых ответах, поэтому я постараюсь расширить его здесь.Если есть еще один пост, на который можно указать, это было бы полезно.
Я использую unittest.mock и pytest, чтобы сказать, правильно ли вызывается функция.Проблема в том, что родительская функция представляет собой бесконечный цикл (по замыслу).
Class ClassA:
def infinite_loop():
#do some stuff
if(something happens):
functionA(param1, param2)
Мой код Pytest выглядит следующим образом:
def test_123:
with patch('moduleA.ClassA.functionA') as mock_functionA:
cA = ClassA()
cA.infinite_loop()
mock_functionA.assert_called_with(value1,value2)
Код Pytest будет выполняться вечно из-за бесконечного цикла и никогда не попадет в оператор assert.Моя первая мысль - заставить функцию A вызвать исключение, когда она вызывается, чтобы разорвать цикл, но есть ли лучший способ?
Если маршрут исключения - правильный путь, как я могу это сделать (с синтаксисом),У меня проблемы с поиском нужного ресурса в Интернете.Спасибо
Редактировать 1:
Был в состоянии выяснить исключение, выполнив:
mock_functionA.side_effect = KeyError("foo")
try:
cA.infinite_loop()
except:
mock_functionA.assert_called_with(value1,value2)
Тем не менее, мой оригинальный вопрос все еще остается, есть ли лучший способсделать это или это лучший способ?