根据不同的输入参数对Python函数进行模拟测试



我有一个实用函数,它接受参数case并相应地返回值

helper.py
def get_sport_associated_value(dictionary, category, case):
if case == 'type':
return "soccer"
else: 
return 1 #if case = 'id'

我有一个使用以上功能的主要功能

crud_operations.py
def get_data(category):
dictionary ={.....}
id =  get_sport_associated_value(dictionary, category, 'id')
.....
.....
type = get_sport_associated_value(dictionary, category, 'type')
....
return "successful"

现在,我正在使用unittest对get_data((模块进行单元测试。嘲弄我在将值传递给id和类型时遇到问题。

@mock.patch('helper.get_sport_associated_value')
def test_get_data(self, mock_sport):
with app.app_context():
mock_sport.side_effect = self.side_effect
mock_sport.get_sport_associated_value("id")
mock_sport.get_sport_associated_value("type")
result = get_queries("Soccer")
asserEquals(result, "successful")
def side_effect(*args, **kwargs):
if args[0] == "type":
print("Soccer")
return "Soccer"
elif args[0] == "id":
print("1")
return 1

我尝试使用side_effect函数,并根据输入参数的不同值模拟get_sport_associated_value((

问题2:在这种情况下,使用mockmok.magicmock的最佳方法是什么?

感谢对单元测试的任何帮助感谢

您错误地将args[0]测试为caseside_effect回调函数的参数应该与要模拟的函数相同:

def side_effect(dictionary, category, case):
if case == "type":
return "Soccer"
elif case == "id":
return 1

相关内容

  • 没有找到相关文章

最新更新