问题描述
我正在使用unittest.mock
,看来它泄漏了很多对象。
我确保始终使用with
语句,例如with mock.patch.object(target=...):
但是我可以看到许多unittest.mock._CallList
,unittest.mock._CallList
,unittest.mock.MagicProxy
类型的对象。
是否有一种方法可以在执行每个测试或类似的测试后清除它?
解决方法
我没有完全回答你的问题。
因此,在模拟对象之后,您发现有很多调用它的对象吗?然后要重置?
您可以使用reset_mock
这里是一个例子:
创建script.py
import boto3
client = boto3.client("ssm")
client2 = boto3.client("sqm")
创建test_a.py
from unittest.mock import patch,MagicMock
@patch("boto3.client")
def test_boto(boto3):
import script
assert len(boto3.mock_calls) == 2
boto3.reset_mock()
assert len(boto3.mock_calls) == 0
运行python3 -m pytest