接口的数据驱动以xlsx后缀。
读取数据时需要用到读取行:
# xlrd库 的用法。
import xlrd
#打开excel
data = xlrd.open_workbook('demo.xls') #注意这里的workbook首字母是小写
#查看文件中包含sheet的名称
data.sheet_names()
#得到第一个工作表,或者通过索引顺序 或 工作表名称
table = data.sheets()[0]
table = data.sheet_by_index(0)
table = data.sheet_by_name(u'Sheet1')
#获取行数和列数
nrows = table.nrows
ncols = table.ncols
以下是实例________:这是封装的代码________________________________________
import xlrd #python读取Excel文件
#读取工具类
class ExcelUtil:
suite_data=[]
reader=xlrd.open_workbook('../data/test_data.xlsx')
host="" #主机
login_url="" #登录地址
login_data="" #登录数据
#获取主机地址,登录地址,默认登录账户
@classmethod
def read_config(cls):
sheet=cls.reader.sheet_by_index(1) #读取下标为1的表格,
cls.host=sheet.cell_value(0,1) #0代表行的下标,1代表列的
# print(cls.host)
cls.login_url=sheet.cell_value(1,1)
cls.login_data=sheet.cell_value(2,1)
#获取excel文件中测试集数据
@classmethod
def read_suite_data(cls):
cls.read_config()
sheet=cls.reader.sheet_by_index(2) #获取下标为2的表格的内容
nrow=sheet.nrows #获取表格中的所有行
for i in range(nrow):
if sheet.cell_value(i,10)=='yes':
cls.suite_data.append([
sheet.cell_value(i, 0), # 用例地址
sheet.cell_value(i, 1), # 请求方法
sheet.cell_value(i, 2), # 接口地址
sheet.cell_value(i, 3), # 用例编号
sheet.cell_value(i, 4), # 用例标题
sheet.cell_value(i, 5), # 操作步骤
sheet.cell_value(i, 6), # 请求头
sheet.cell_value(i, 7), # 输入数据
sheet.cell_value(i, 8), # 返回状态码
sheet.cell_value(i, 9), # 预期结果
sheet.cell_value(i, 10), # 是否执行
sheet.cell_value(i, 11) # 执行结果
])
#获取测试数据集(参数化测试)
@classmethod
def get_test_data(cls,testname):
cls.read_suite_data()
list_test_data=[] #定义新列表,写去需要的信息
for data in cls.suite_data:
if testname in data[0]:
list_test_data.append(
(
# 'login',
data[1], # 请求方法
data[2], # 接口地址
# data[6], # 请求头
data[7], # 输入数据
data[9], # 预期结果
)
)
return list_test_data
# if __name__ == '__main__':
# eu = ExcelUtil()
# eu.read_suite_data()
# print(ExcelUtil.get_test_data('test_login'))