python读写excel自动化-python接口自动化学习笔记(封装方法用于读取excel)

from collections import namedtuple

from openpyxl import load_workbook

# 1.如何将一些操作(Excel读写)进行封装?(写出封装的思路)

# a、加载excel文件,定位表单;

# b、定位单元格,读取所有用例数据;

# c、遍历所有单元格数据,或使用ddt;

# d、写入指定单元格数据,保存excel文件;

class ReadExcelData(object):

"""封装读取excel表单数据的工具类"""

def __init__(self, file_path, sheet_name=None):

"""

初始化openpy加载excel文件

定位表单及初始化参数

"""

self.file_path = file_path

self.sheet_name = sheet_name

# 打开已存在Excel文件

self.wb = load_workbook(self.file_path) #打开指定的excel

# 定位表单

self.ws = self.wb[self.sheet_name] if self.sheet_name is not None else self.wb.active # 获取第一个表单

self.sheet_head_tuple = tuple(self.ws.iter_rows(max_row=self.ws.min_row, values_only=True))[0]

self.cases_list = [] # 定义一个存放元组的对象

self.Cases = namedtuple("cases", self.sheet_head_tuple) # 创建一个命名元组类

def get_all_cases(self):

"""

获取excel所有测试用例

"""

for tuple_data in self.ws.iter_rows(min_row=self.ws.min_row + 1, values_only=True): # 每次遍历,返回由某行所有单元格值组成的一个元组

self.cases_list.append(self.Cases(*tuple_data))

return self.cases_list

def get_one_case(self, row):

"""

获取一条case

:return一个case对象

"""

if isinstance(row, int) and (self.ws.min_row + 1 <= row <= self.ws.max_row):

return tuple(self.ws.iter_rows(min_row=row, max_row=row, values_only=True))[0]

else:

print("传入行号不正确,应为大于1的整数!")

def write_file(self, row, actul_result, result_status):

"""

执行用例结果写入excel,并保存

"""

if isinstance(row, int) and (self.ws.min_row + 1 <= row < self.ws.max_row):

self.ws.cell(row=row, column=self.ws.max_column - 1, value=actul_result)

self.ws.cell(row=row, column=self.ws.max_column, value=result_status)

self.wb.save(self.file_path)

else:

print("处理失败!")

if __name__ == "__main__":

file_path = u"E:\heguanghua\python\接口自动化\api.xlsx"

sheet_name = "Sheet1"

res = ReadExcelData(file_path,sheet_name).get_all_cases()

print(res)

print("================================================")

re = ReadExcelData(file_path,sheet_name).get_one_case(2)

print(re)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值