引言:直接去编写一个完全没有接触过得脚本无疑是非常困难的,但是采取拆分以及迭代的方法一步步编写脚本就会好理解很多。
接口信息:接口请求地址:http://localhost:8080/jwshoplogin/user/logido接口请求参数:username:李明password:123456预期结果:登录成功、用户名不存在、密码错误
v0发送请求,获取响应结果
定义接口请求地址:url='接口请求地址'通过request对象调用post方法发送请求,并接受响应:response=request.post(ur.text调式脚本:print响应结果
v0代码如下:#针对登录接口进行测试#接口请求地址:http://localhost:8080/jwshoplogin/user/logido#接口请求参数:username:李明password:123456#预期结果:登录成功、用户名不存在、密码错误importrequestsurl='http://localhost:8080/jwshoplogin/user/logido'response=requests.post(ur.textprint(respons运行结果如下,因为没有输入参数,所以可以当成是输入为空。{'status':1,'msg':'用户名不存在'}
v0传入接口测试数据
定义字典类型进行接口参数的赋值:userinfo={'username':'李明','password':'123456'}传入到post方法中:response=request.post(url,data=userinfo).text
v0代码如下:importrequestsurl='http://localhost:8080/jwshoplogin/user/logido'userinfo={'username':'李明','password':'123456'}response=requests.post(url,data=userinfo).textprint(respons运行结果如下:{'status':0,'msg':'登录成功'}
v0对响应结果进行校验,得出测试结论
调用find方法,查找返回的字符中是否存在对应的信息:msg=responsfind('预期结果')判断语句得出相关的测试结论先用if语句实现功能。
v0代码如下:importrequestsurl='http://localhost:8080/jwshoplogin/user/logido'userinfo={'username':'李明','password':'123456'}response=requests.post(url,data=userinfo).textprint(responsmsg=responsfind('登录成功')ifmsg>0:print('测试通过')else:print('测试失败')
v0从文件中传入多组测试数据
准备测试数据的csv文件读取csv文件中的测试数据以只读方式打开文件:file=open('userinfo.csv','r')获取文件中的数据--循环结构table=csv.reader(filforrowintable:print(row[下标])把测试数据放入字典中:userinfo['参数的名字']=row[下标]
v0代码如下:importrequestsimportcsv#调用接口url='http://localhost:8080/jwshoplogin/user/logido'#传入接口参数#1读取csv文件中的数据file=open('userinfo.csv','r')table=csv.reader(fil#把测试数据放入字典中userinfo={}forrowintable:userinfo['username']=row[0]userinfo['password']=row#获取接口响应结果response=requests.post(url,data=userinfo).textprint(respons#进行比对,得出测试结论msg=responsfind(row)ifmsg>0:print('测试通过')else:print('测试失败')
v0把每一组测试数据对应的测试结果写入接口测试报告中
创建一个可写入的文件:file2=open('test_result.csv','w')#因为文件不能同时阅读和书写,所以只能创建一个新的文件去填写测试数据。向文件中写入内容filewrite('李明'+','+'123456'+','+'登录成功'+' ')#后面一定要加一个换行符,不然在写入的表格的时候不会自动换行。最后记得关闭文件
v0代码如下:importrequestsimportcsvfile1=open('userinfo.csv','r')file2=open('test_result.csv','w')#调用接口url='http://localhost:8080/jwshoplogin/user/logido'#传入接口参数table=csv.reader(fileuserinfo={}forrowintable:userinfo['username']=row[0]userinfo['password']=row#获取接口响应结果response=requests.post(url,userinfo).textprint(responsr=responsfind(row)ifr>0:print('测试通过')#加print便于检查代码,后期可以注释掉filewrite(row[0]+','+row+','+row+','+'测试通过'+' ')else:print('测试失败')filewrite(row[0]+','+row+','+row+','+'测试失败'+' ')fileclose()
v0使用面向对象的思想去设计脚本
面向对象设计思路:
一个接口测试对应一个类文件接口请求地址作为属性接口的测试数据如果是固定的,也可以放在属性中定义测试方法中实现:发送请求,获取响应,对响应的结果进行比对在main方法中进行类的实例化对象名=类名()对象名.测试方法()
v0代码如下:#使用面向对象思想针对登录接口进行测试#接口请求地址:http://localhost:8080/jwshoplogin/user/logido#接口请求参数:usernamepassword#预期结果:登录成功、用户名不存在、密码错误importrequestsimportcsv#定义测试类classLoginTest():def__init__(sel:selurl='http://localhost:8080/jwshoplogin/user/logido'deflogintest(sel:file1=open('userinfo.csv','r')file2=open('test_result.csv','w')userinfo={}table=csv.reader(fileforrowintable:userinfo['username']=row[0]userinfo['password']=rows=requests.session()response=s.post(selurl,data=userinfo).textr=responsfind(row)ifr>0:filewrite(row[0]+','+row+','+row+','+'测试通过'+' ')else:filewrite(row[0]+','+row+','+row+','+'测试失败'+' ')fileclose()#在main方法中进行类的实例化if__name__=='__main__':login=LoginTest()logilogintest()
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点