在使用rf做接口测试时,我主要是通过excel来保存测试数据,模板如下:
第1列是用例名称简单说明,第2列为接口url,第3+n列是接口入参,最后二列为返回值status,和返回data中的参数
固定行列值的数据我们可以很方便通过指定行列值来获取,难点是,每个接口的入参个数不固定,怎样才能获取到入参数据呢?
我的思路是,先获取该sheet页中总列数n=6,则可以算出入参的下标为2至n-1-2=3,即[2,3],用一个字典存放入参数据。
我写了一个读取测试数据的公共关键字,如下:
参数为文件路径,(如果excel文件放在项目代码文件目录下,则直接写excel名称即可),sheet页名称,需读取测试数据在sheet页中的行数
其中,第一行中getExcelColumnCount函数是通过自写库导入:
## 获取Excel列数
def getExcelColumnCount(self, file_name, sheet_name):
with closing(load_workbook(filename=file_name)) as wb:
columns = wb.get_sheet_by_name(name = str(sheet_name)).max_column
return columns
第5行,获取测试数据,将其存放在一个字典列表@{dict}中,List Read Excel函数是通过自写库导入:
## 读取从某一行某一列开始的n个值
def listReadExcel(self, file_name, sheet_name, cell_row,cell_col,n):
with closing(load_workbook(filename=file_name, data_only=True)) as wb:
ws = wb.get_sheet_by_name(str(sheet_name))
cellValueList = []
for i in range(int(n)):
cellValue = ws.cell(row=int(cell_row),column=int(cell_col)+i).value
cellValueList.append(cellValue)
return cellValueList
第9-12行,将后面需要用到的参数设置为全局变量,方便调用
然后在测试用例步骤中调用该关键字,如下:
读取参数再单独写一个关键字,根据下标,从@{dict}中依次读取,这里需要注意的是,rf中的参数与excel中的参数位置需要一致,才能够读取到正确的参数值