Исключение фиктивной функции для проверки бесконечного цикла - PullRequest
0 голосов
/ 20 сентября 2018

У меня возникли проблемы с формулировкой этого вопроса в 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)

Тем не менее, мой оригинальный вопрос все еще остается, есть ли лучший способсделать это или это лучший способ?

...