2023年7月10日发(作者:)
python接⼝⾃动化实战(框架) python接⼝测试的原理,就不解释了,百度⼀⼤堆。 先看⽬录,可能这个框架⽐较简单,但是⿇雀虽⼩五脏俱全。各个⽂件夹下的⽂件如下:⼀.理清思路 我这个⾃动化框架要实现什么 1.从excel⾥⾯提取测试⽤例 2.测试报告的输出,并且测试报告得包括执⾏的测试⽤例的数量、成功的数量、失败的数量以及哪条成功了,失败的是哪⼀个,失败的原因是什么;测试结果的总体情况通过图表来表⽰。 3.测试报告⽤什么形式输出,excel,还是html,还是其他的,这⾥我选择了excel 4.配置⽂件需要配置什么东西 5.哪些东西可以放⼊公共函数直接调⽤。好的这些思路理清楚之后就可以动⼿了。⼆.⾸先是配置⽂件和excel测试⽤例的设计 数据与代码分离,也就是数据性的需要作为配置⽂件可以随时修改。如:接⼝url,⽹站登录权限验证信息,数据库信息。全部存⼊config⽂件夹下下⾯是具体的配置⽂件信息:API_erthouse=IP:port/scp-mdmapp/house/insertHousedeletehouse=IP:port/scp-mdmapp/house/deleteHousebatchdeletehouse=IP:port/scp-mdmapp/house/batchdeleteHousegethouse=IP:port/scp-mdmapp/house/getHouseupdatehouse=IP:port/scp-mdmapp/house/sM0tOr7exORUNpkZ-FtprjpNBhMtFjUAdnYDnhRfaR6qi3fqVkybyb245zONiTxLOw8jBR60oNUVEbKx9_cut6uDIZMUFYOx6我的测试⽤例的设计如下:notes是测试⽤例摘要。三.公共函数存在common⽂件夹下get_#从配置⽂件获取访问权限信息def get_Authorization(): fp = open('D:') info = () () return rt os,xlrd,xlwt,time#通过配置⽂件⾥的接⼝名称来获取接⼝url的函数def get_url(api_name): fp = open('D:personlearnpyHDapiconfigAPI_')#按⾏读取接⼝url配置⽂件 api_infos = nes() ()#通过for循环来遍历配置⽂件⾥的每⼀个url,并且返回传⼊的接⼝名称相应的url for api in api_infos:#去除因为读取产⽣的换⾏空格等 api_f = (' rnt') api_c = api_('=') if api_name == api_c[0]: return api_c[1]#通过传⼊⽤例名称的⽂件和excel页⾯来读取测试⽤例def get_case(filename,sheetnum): case_dir='D:personlearnpyHDapitestcase_excel' + '' + filename + '.xlsx' datas = _workbook(case_dir) table = ()[sheetnum] nor = nol = return nor,table#通过xlwt库来设计测试报告并写⼊excel⾥⾯def write_report(): workbook = ok(encoding='utf-8')#在excel测试报告表格中创建名叫housemanage的页⾯ worksheet = _sheet('housemanage')#设置字体格式为居中对齐 alignment = ent() = _CENTER = _CENTER style = e() ent = alignment
#具体的合并哪些单元格并且写⼊相应的信息 _merge(0,0,0,7,'测试报告(housemanage)',style) _merge(1,10,0,0,'house_manage',style) _merge(1,2,1,1,'insethouse',style) _merge(3,4,1,1,'updatehouse',style) _merge(5,6,1,1,'deletehouse',style) _merge(7,8,1,1,'gethouse',style) _merge(9,10,1,1,'updatehouse',style) _merge(1,2,11,11,'total_result',style) (1,2,'notes') (2,2,'detail') (3,2,'notes') (4,2,'detail') (5,2,'notes') (6,2,'detail') (7,2,'notes') (8,2,'detail') (9,2,'notes') (10,2,'detail') (1,12,'pass') (1,13,'faild')#最后返回worksheet,workbook两个参数,因为在测试测试⽤例和运⾏⽂件中需要⽤到的两个参数 return worksheet,workbook四.测试⽤例的编写test_rt requests,unittest,os,time,jsonfrom common import public,get_authorization#房屋添加⽤例,通过传⼊public⾥wirte_sheet函数返回的参数wooksheet,将⽤例的执⾏结果写⼊到测试报告中def test_inserthouses(worksheet,workbook): url = _url('inserthouse') nor,table = _case('house',0) Authorization = get__Authorization() a = 2 xu = 0 yu = 0#⽤for循环来实现遍历⼀个excel页⾯的所有测试⽤例 for i in range(1,nor):#获取excel表格⾥⾯需要给接⼝传⼊的参数 houseNum = _value(i,0) orgUuid = _value(i,1) floor = _value(i,2) houseUseFor = _value(i,3) residentNum = _value(i,4) emergencyPhone = _value(i,5) expect_code = _value(i,6) expect_message = _value(i,7) notes = _value(i,8) payment = _value(i,11)#接⼝body需要传⼊的参数 data = { 'houseNum':houseNum, 'houseUseFor':houseUseFor, 'orgUuid':orgUuid, 'residentNum':residentNum, 'floor':floor, 'emergencyPhone':emergencyPhone, 'payment':payment }#请求头,⽹站加了登陆验证之后需要在请求头传⼊Authorization参数 headers={ 'Accept':'application/json', 'Content-Type':'application/json', 'Authorization':Authorization } a+=1 (1,a,notes) data = (data) r = (url,data=data,headers=headers)#将字符串格式转换为字典 b = eval() m = ('code') n = ('message') k = ('data')#判断接⼝测试通过与否 if m==expect_code and n==expect_message: (2,a,'pass') xu += 1 else: (2,a,'faild:%s'%k) yu += 1#测试⽤例执⾏完后,返回⽤例成功与失败的数量#测试⽤例执⾏完后,返回⽤例成功与失败的数量 return xu,yu# now = me('%Y-%m-%d %H_%M_%S')# report_dir = 'D:personlearnpyHDapireport'# filename =report_dir + now + ''# (filename)test_rt requests,unittest,os,time,jsonfrom common import public,get_authorization#房屋编辑测试⽤例def test_updatehouses(worksheet,workbook): nor,table = _case('house',4) Authorization = get__Authorization() url = _url('updatehouse') a = 2 x = 0 y = 0 for i in range(1,nor): houseNum = _value(i,0) orgUuid = _value(i,1) uuid = _value(i,2) houseUseFor = _value(i,3) residentNum = _value(i,4) emergencyPhone = _value(i,5) expect_code = _value(i,6) expect_message = _value(i,7) notes = _value(i,8) floor = _value(i,9) payment = _value(i,11) data = { 'houseNum':houseNum, 'houseUseFor':houseUseFor, 'orgUuid':orgUuid, 'floor':floor, 'residentNum':residentNum, 'uuid':uuid, 'emergencyPhone':emergencyPhone, 'payment':payment } headers={ 'Accept':'application/json', 'Content-Type':'application/json', 'Authorization':Authorization } a+=1 (3,a,notes) data = (data) r = (url,data=data,headers=headers) b = eval() m = ('code') n = ('message') k = ('data') if m==expect_code and n==expect_message: (4,a,'pass') x += 1 else: (4,a,'faild:%s'%k) y += 1 return x,y五.通过对公共函数、测试⽤例的设计联合的思考应该在执⾏⽂件⾥⾯做什么,实现什么。本来我想将执⾏⽂件单独放置于HDapi-auto-test的根⽂件下的,可是将测试通过与不通过的数量写⼊到测试报告⾥⾯,就必须要调⽤公共函数的⽅法,由于放置在根⽂件夹下与公共函数隔了⼀个⽂件夹⽆法调⽤( 本鸟不会调⽤),所以不得不将执⾏⽂件放置于测试⽤例⽂件夹下了,好在⽂件名还是⽐较好区分也⽐较好寻找,另外我还想加上⾃动发送邮件的功能,这⾥不写了,其实发送邮件很简单随便找⼏个例⼦就OK了,ps:代码⽐较low,都没有封装,直接暴⼒简单执⾏。代码如下:# utf-8from common import publicimport test_inserthouse,test_updatehouseimport timefrom pychartdir import *#从公共函数调⽤excel的写⼊⽅法worksheet,workbook = _report()#测试⽤例的执⾏,并且返回x:成功的数量,y:失败的数量xu,yu = test__inserthouses(worksheet,workbook)x,y = test__updatehouses(worksheet,workbook)#得到成功与失败的总数量xr = x+xuyr = y+yu#将成功与失败的数量写⼊的excel的固定表格中(2,12,xr)(2,13,yr)#获取当前的时间并以制定的格式返回now = me('%Y-%m-%d %H_%M_%S')#测试报告输出的地址report_dir = 'D:personlearnpyHDapireport'#拼接出测试报告名filename =report_dir + now + ''(filename)#通过pychart库实现图形处理,⽣成测试报告总览图----具体的参数设计可以参考pychart库的⽂档data = [yr, xr]labels = ["faild", "pass"]c = PieChart(280, 240)Size(140, 130, 80)le("api_result")3D()a(data, labels)lode(0)art(report_dir+now+"")六.奉上测试报告输出本来想将⽣成的图⽚放进excel测试报告⾥⾯的,奈何能⼒有限,没办法将图⽚放进去,智能单独存为⼀个png⽂件了图表总览:excel测试报告情况:
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688930505a184684.html
评论列表(0条)