2023年7月10日发(作者:)
python接⼝⾃动化-excel参数化⼀我们测试每个功能的时候,都不⽌⼀条⽤例,例如:登录,⽤例⾄少包含4条(1正确⽤户名,正确密码;2正确⽤户名,错误密码;3错误⽤户名,正确密码;4错误⽤户名,错误密码)。那么这4条⽤例,都是调⽤的⼀个接⼝,我们如果写⼀个登录类,⼀条⽤例⼀个⽅法的话,其实每个⽅法除了数据不⼀样,其他的全部都相同,那么代码就冗余了,所以我们可以把数据都放在⼀个⽤例⽂件⾥,然后去⽂件⾥取数据给接⼝调⽤就可以了。那具体怎么实施呢,我们来实例讲解⼀下。1、需求扫码功能:对图书的isbn进⾏扫码2、⽤例⽤例就直接写在表格⾥了,如下:这⾥边的参数是写死的,只有第⼀条是正例,其他都是反例其中测试结果和返回值是需要运⾏⽤例的时候写进来的。所以我们需要对表格有读,写,两个操作。备注:预期结果那⾥是我打算⽤来断⾔的,写的200,3000都是状态码,那么把这些写在表格⾥的时候,注意⼀定要把这⼀列的单元格格式设置为“⽂本”,否则可能会有⼩数点,导致判断不准确。3、表格操作⽣成⼀个读取表格的py⽂件,名称为case_,代码如下:import xlrd #读表格⽤的from import copy #写⼊表格⽤的import ('../')
def read_data(file_path,i,j): #从⽂件读数据 i从哪列开始取,j到哪列结束 my_file = _workbook(file_path) #打开表格 table=my_()[0] #取到第⼀张sheet rowcount = #获得⾏数 colcount = #获得列数 li = [] for row in range(1,rowcount): #遍历所有⾏ for col in range(i,j): #遍历参数所在列,定位好⾏号列号以后,就可以取出参数了 ((row,col).value) #把取出来得值存成list,只能取单个值,如果想取多个,可以多次调⽤ return (li)#print (read_data('./',3,4)) #这是调⽤读表格,3,4表⽰第4列def write_result(file_path,i,j,result): #把返回值写⼊表格 i⾏号,j列号,result写⼊的值,file_path⽂件路径 my_file = _workbook(file_path) #打开⽂件 workbooknew = copy(my_file) #转换表格属性,⽬的是为了写⼊,类似于中间表,可以理解为先把数据存到⼀个位置,最后再把数据存⼊表格 table = _sheet(0) #获取第⼀张sheet (i,j,result) #写⼊的⾏,列,值 (file_path) #把表格属性转化回来,把数据存⼊表格#write_result('./',1,5,'pass')
这是写⼊表格,1表⽰第1⾏,5表⽰第5列读表格是:read_data⽅法写⼊表格是:write_result⽅法读表格运⾏结果是:写⼊表格的运⾏结果是:4、数据应⽤创建⼀个py⽂件,名称为api_,这个⽂件是⽤例⽂件,在这⾥调⽤接⼝,使⽤表格⾥的参数,并把结果写回表格。import unittestimport requestsimport jsonimport ('../')
import io #下边这句注释掉了,原因是,如果有这句会影响其他⼆进制⽂件对它的读取,会报io错误# = Wrapper(,encoding='utf8') #改变标准输出的默认编码from case_data import *class Test_Apicase(se): def setUp(self): pass
def test_saoma_dt(self): '''单条扫码''' = '*****/api/book/scan/search' #url _path = './' #⽤例路径 self.d = read_data(_path,3,4) #读取参数 = read_data(_path,4,5) #读取预期结果,⽤来跟实际结果对⽐ print ('测试数据⽂件是:%s' % _path)
for i in range(0,len(self.d)): #循环调⽤接⼝,因为取出来的数据不⽌⼀条,也就是需要多次调⽤同⼀个接⼝ = [i] #把预期结果取出来⼀个 = eval(self.d[i]) #把参数取出来⼀个,转换成字典,直接当参数,也就是把{'isbn' : '1234'}直接当参数 = (,params=) #调⽤接⼝,把上边⼀句取出来的参数传给接⼝ self.r = () = ('code') #取出来返回值⾥的状态码,⽤来跟预期结果对⽐ try: Equal(str(),) #监控断⾔是否正确,如果正确写⼊pass _result = 'pass' except AssertionError as e: #异常处理,如果监控的代码有问题,则执⾏这个,AssertionError表⽰断⾔失败 _result = 'failed' #如果断⾔不正确说明这条⽤例失败了,写failed raise e #⽤于抛出异常,否则⽤例失败了,但是批量运⾏⽤例时,显⽰通过,必须抛 finally: #⽆论是否异常,都会执⾏下⾯得语句 write_result(_path,i+1,5,_result) #把pass和failed写⼊表格 write_result(_path,i+1,6,str(self.r)) #把返回值写⼊表格 def tearDown(self): passif __name__=='__main__': suite = ite() t(Test_Apicase('test_saoma_dt')) runner = stRunner(verbosity=2) (suite)运⾏结果如下:表格数据如下:综上所述,就是做表格参数化的具体思路了,希望能够帮助到⼤家! 如果对软件测试、接⼝测试、⾃动化测试、持续集成、⾯试经验。感兴趣可以进到806549072,群内会有不定期的分享测试资料。还会有技术⼤⽜,业内同⾏⼀起交流技术
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688932143a184909.html
评论列表(0条)