我在将这个问题表达为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语句。我的第一个想法是让functionA在被调用以打破循环时遇到异常,但是有更好的方法吗?
如果异常路由是正确的方法,我该怎么做(从语法上来说)。我在网上找不到正确的资源时遇到了麻烦。谢谢
编辑1:
能够通过执行以下操作找出异常:
mock_functionA.side_effect = KeyError("foo")
try:
cA.infinite_loop()
except:
mock_functionA.assert_called_with(value1,value2)
但是,我最初的问题仍然存在,有没有更好的方法或者这是最好的方法?