我如何检查调用参数是否会随 unittest.mock 改变
首先,我们需要使用 unittest.mock 的 patch 函数来模拟函数的行为,然后我们可以通过调用被 mock 函数的 assert_called_with 方法来检查调用参数是否会随 unittest.mock 改变。
以下是一个代码示例:
```python
from unittest import TestCase
from unittest.mock import Mock, patch
# 这是我们要模拟的函数
def myFunc(arg1, arg2):
return arg1 + arg2
class TestMyFunc(TestCase):
def test_myfunc(self):
# 我们使用 patch 函数来模拟 MyFunc 函数,返回一个 Mock 对象
with patch('__main__.MyFunc', return_value=0) as mocked_function:
# 然后我们调用模拟的函数,传入一些参数
MyFunc(1, 2)
# 我们使用 assert_called_with 方法来检查被调用的参数是否与我们期望的值一样
mocked_function.assert_called_with(1, 2)
if __name__ == '__main__':
unittest.main()
```
在这个例子中,我们首先定义了一个函数 MyFunc,然后我们在 unittest.TestCase 类中创建了一个测试用例。在 test_myfunc 方法中,我们使用 patch 函数来模拟 MyFunc 函数,返回一个 Mock 对象。然后我们调用模拟的函数,传入一些参数。最后,我们使用 assert_called_with 方法来检查被调用的参数是否与我们期望的值一样。
如果你需要测试 unittest.mock 改变的情况,你可以在模拟函数的时候传入一些可变的参数,然后检查这些参数是否会随 unittest.mock 改变。例如,你可以使用 Mock 对象的 return_value 和 side_effect 属性来实现这个需求。