引言:上一章初练接口测试脚本学习了单个接口脚本的编写,本章将会对多个接口的联调测试做一个学习总结。
测试任务:
需要将五个接口写在一起,同时接口4会返回一个token的参数传入接口
联调测试业务分析:
前期准备工作:编写接口联调分析文档,包括接口请求地址、传入参数、预期响应结果只进行正常数据的接口测试,异常数据会导致下一个接口无法测试。脚本设计:在前期不熟练的时候可以画流程熟悉整个测试流程。定义一个类,五个方法。一个方法对应一个接口测试。针对接口4需要返回的参数token,我们可以首先将接口4的字符串类型的请求结果,转化为字典类型,然后根据key值data去获取它的value。其中使用的eval方法,具体使用可参阅python3中eval函数用法简介部分代码如下:#获取响应结果中的token值#将字符串类型的返回结果,转化为字典类型dic={}dic=eval(respons#根据字典key值data去获取它的valuetoken=dic['data']
完整脚本实现:
#针对多个接口进行联调测试,接口内容如下:#用户注册接口#接口地址:http://localhost:8080/jwshoplogin/user/register.do#接口参数:usernamepasswordemailphonequestionanswer#用户登录接口#接口地址:http://localhost:8080/jwshoplogin/user/logido#接口参数:usernamepassword#忘记密码接口#接口地址:http://localhost:8080/jwshoplogin/user/forget_get_questiodo#接口参数:username#提交密保问题答案#接口地址:http://localhost:8080/jwshoplogin/user/forget_check_answer.do#接口参数:usernamequestionanswer#回答完密保问题后修改密码接口#接口地址:http://localhost:8080/jwshoplogin/user/forget_reset_passwordo#接口参数:usernamepasswordNewforgetTokenimportrequests#定义一个接口联调的测试类classWorkflow_Forgetpassword_Test():#用户注册接口测试defregister_test(sel:url='http://localhost:8080/jwshoplogin/user/register.do'#正确的用户注册数据userinfo={'username':'刘婷3','password':'123456','email':'liuting3@qq.com','phone':'13311111111','question':'喜欢吃的水果','answer':'香蕉'}#发送注册请求并获取响应response=requests.post(url,data=userinfo).textprint(responsr=responsfind('注册成功')ifr>0:print('用户注册接口测试通过')else:print('用户注册接口测试失败')#用户登录接口测试deflogin_test(sel:url='http://localhost:8080/jwshoplogin/user/logido'#正确的用户登录数据userinfo={'username':'刘婷3','password':'123456'}#发送登录请求并获取响应response=requests.post(url,data=userinfo).textprint(responsr=responsfind('登录成功')ifr>0:print('用户登录接口测试通过')else:print('用户登录接口测试失败')#忘记接口测试defforgetpassword_test(sel:url='http://localhost:8080/jwshoplogin/user/forget_get_questiodo'#忘记密码对应的用户userinfo={'username':'刘婷3'}#发送忘记密码请求并获取响应response=requests.post(url,data=userinfo).textprint(responsr=responsfind('喜欢吃的水果')ifr>0:print('忘记密码接口测试通过')else:print('忘记接口测试失败')#提交密保问题答案接口测试defsubmit_test(sel:url='http://localhost:8080/jwshoplogin/user/forget_check_answer.do'#密保问题答案userinfo={'username':'刘婷3','question':'喜欢吃的水果','answer':'香蕉'}#发送密保问题答案并获取响应response=requests.post(url,data=userinfo).textprint(respons#获取响应结果中的token值#将字符串类型的返回结果,转化为字典类型dic={}dic=eval(respons#根据字典key值data去获取它的valuetoken=dic['data']#print(toker=responsfind('data')ifr>0:print('提交密保问题接口测试通过')else:print('提交密保问题接口测试失败')#返回获取到的tokenreturntoken#回答完密保问题后修改密码接口接口测试defmodify_password_test(self,toke:url='http://localhost:8080/jwshoplogin/user/forget_reset_passwordo'#正确的用户登录数据userinfo={'username':'刘婷3','passwordNew':'666666','forgetToken':token}#发送登录请求并获取响应response=requests.post(url,data=userinfo).textprint(responsr=responsfind('修改密码成功')ifr>0:print('修改密码接口测试通过')else:print('修改密码接口测试失败')if__name__=='__main__':workflowobj=Workflow_Forgetpassword_Test()workflowobregister_test()workflowoblogin_test()workflowobforgetpassword_test()token=workflowobsubmit_test()workflowobmodify_password_test(tokeworkflowoblogin_test()
运行结果:
{'status':0,'data':'注册成功'}用户注册接口测试通过{'status':0,'msg':'登录成功'}用户登录接口测试通过{'status':0,'data':'喜欢吃的水果'}忘记密码接口测试通过{'status':0,'data':'f8e5678e-734d-4c5c-8297-1b8cf7058b8c'}提交密保问题接口测试通过{'status':0,'msg':'修改密码成功'}修改密码接口测试通过{'status':1,'msg':'密码错误'}用户登录接口测试失败
最后的接口测试失败也是因为改完密码之后再次登录还是使用的老密码导致的。
像这样直接编写的脚本,可以发现基本结构都是一致的,只是数据不同,所以后续还会进行结构的优化。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点