模拟功能异常以测试无限循环

时间:2018-09-20 14:39:04

标签: mocking patch

我在将这个问题表达为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)

但是,我最初的问题仍然存在,有没有更好的方法或者这是最好的方法?

0 个答案:

没有答案