如何在PythonUnitTest中每次使用不同的参数断言多个方法调用?
我正在使用python unittest来测试我的代码。作为我代码的一部分,我正在使用这些如何在PythonUnitTest中每次使用不同的参数断言多个方法调用?,python,python-3.x,mocking,python-unittest,Python,Python 3.x,Mocking,Python Unittest,我正在使用python unittest来测试我的代码。作为我代码的一部分,我正在使用这些 boto3.client('sts') boto3.client('ec2') boto3.client('ssm', arg1, arg2) 所以,在编写测试用例并将其作为论据之前,我模仿了boto3。 现在我可以断言boto3.client是否调用 但我想检查是否使用sts调用boto3.client,以及使用ec2和ssm调用boto3.client,arg1,arg2 当只有一个调用时,我可以使
boto3.client('sts')
boto3.client('ec2')
boto3.client('ssm', arg1, arg2)
所以,在编写测试用例并将其作为论据之前,我模仿了boto3。
现在我可以断言boto3.client是否调用
但我想检查是否使用sts调用boto3.client,以及使用ec2和ssm调用boto3.client,arg1,arg2
当只有一个调用时,我可以使用boto3.client.assert\u调用带有('my parameters')
。但面临的问题是每次检查多个参数不同的呼叫
@patch('createCustomer.src.main.boto3')
def test_my_code(self, mock_boto3):
# Executing main class
mainclass(arg1, arg2)
# Verifing
mock_boto3.client.assert_called()
我想达到这样的目标
mock_boto3.client.assert_called_once_with('sts')
mock_boto3.client.assert_called_once_with('ec2')
mock_boto3.client.assert_called_once_with('ssm',arg1,arg2)
但这只是在第一次断言中给出错误,表示boto3.client调用了3次,并且显示了最后一次调用的参数,即“ssm”、arg1、arg2如果要验证对同一模拟的多个调用,可以使用。就你而言:
mock_boto3.client.assert_has_calls([
call('sts'),
call('ec2'),
call('ssm', arg1, arg2)
])
这是不是
调用
是语法的一部分?若我正在编写call('sts'),那个么它给出了语法错误,并没有定义对call/name call的未解析引用。但是,当我检查has_calls expected parameters时,它包含call('st)@venkat,你是说名称错误吗?像补丁
,调用
是单元测试.mock的一部分;您必须从该模块导入它。哦!知道了。我从unittest.mock import调用中调用了
,它成功了。以前我只是导入补丁和MagicMock