【发布时间】:2021-11-01 01:31:06
【问题描述】:
我正在尝试使用pytest-mock 来模拟链式函数调用。
@app.route('/application', methods=['PUT'])
def update_application():
a = json.loads(request.data)['application']
application = Application.objects(id=a['id']).first()
if not application:
return jsonify({'error': 'data not found'})
else:
application.update(jobTitle=a['jobTitle'],
companyName=a['companyName'],
date=a['date'],
status=a['status'
update_application 方法有一个链式函数调用,如下所示
Application.objects(id=a['id']).first()
我尝试使用以下方法模拟链接调用,但无法模拟。
def test_update_application(client, mocker):
application = Application(id=4, jobTitle='fakeJob12345', companyName='fakeCompany', date=str(datetime.date(2021, 9, 22)))
mocker.patch(
'app.Application.update'
)
m = mocker.MagicMock()
m.Application.objects().first.return_value = application
rv = client.put('/application', json={'application':{
'id':2, 'jobTitle':'fakeJob12345', 'companyName':'fakeCompany', 'date':str(datetime.date(2021, 9, 23)), 'status':'1'
}})
print(rv.data)
jdata = json.loads(rv.data.decode("utf-8"))["jobTitle"]
assert jdata == 'fakeJob12345'
我可以像下面那样模拟Application.objects(id=a['id']),效果很好。
mocker.patch(
'app.Application.objects',
return_value = list_application
)
谁能告诉我如何模拟链式函数?
【问题讨论】:
标签: mocking pytest pytest-mock