接口自动化框架(二)

上次我们已经将requests库封装成我们想要的样子了,我们的接口自动化已经完成了最开始的一步了,接下来我们需要完成我们相应的其他模块的封装,下面简单介绍下我们在接口自动化需要用到的模块吧
在接口自动化中我们常用的模块有requests、openpyxl、pymysql、configparser、ddt、HTMLTestRunner等一些模块
下面介绍下openpyxl是怎么用的吧

  1. 安装方式

    pip install openpyxl
    
  2. 使用方式
    直接看代码块吧,详细描述在代码块里面的注释会写的

import openpyxl


# 获取wb的对象
wb = openpyxl.load_workbook(r"D:\test.xlsx")
# 获取工作表
sheet = wb["test1"]
# 读取改工作表的最大行
print(sheet.max_row)

上面的只是一个openpyxl的简单用法,获取Excel里面的数据我直接封装到类里面了
下面的封装方法都是适用任何项目的

import openpyxl


class ReadExcel:
"""读取Excel"""
    def __init__(self, file_path, sheet_name):
        self.file_path = file_path
        self.sheet_name = sheet_name

    def open(self):
        """获取wb对象"""
        self.wb = openpyxl.load_workbook(self.file_path)

    def get_sheet(self):
        """
        获取sheet
        """
        self.open()
        sheet = self.wb[self.sheet_name]
        self.wb.close()
        return sheet

    def get_cell(self, row, col):
        """
        获取单元格对象
        """
        object = self.get_sheet().cell(row, col)
        self.wb.close()
        return object

    def get_cell_value(self, row, col):
        """
        获取某一个单元格的值
        """
        data = self.get_cell(row, col).value
        self.wb.close()
        return data

    def read(self):
        """读取所有数据"""
        # 运用列表推导式获取title
        headers = [i.value for i in self.get_sheet()[1]]
        row_data = []
        for row in range(2, self.get_sheet().max_row+1):
            data = []
            for col in range(1, self.get_sheet().max_column+1):
                data.append(self.get_cell_value(row, col))
            # 用zip函数将两个列表组合成字典
            data_info = dict(zip(headers, data))
            row_data.append(data_info)
        self.wb.close()
        return row_data

    def write(self, row, col, values):
        """
        回写数据
        :param row:
        :param col:
        :param values:
        :return:
        """
        self.get_cell(row, col).value = values
        self.save()
        return self.get_cell(row, col).value

    def save(self):
        """
        保存
        :return:
        """
        self.wb.save(self.file_path)
  1. 读取所有的数据展示是这样的:
    在这里插入图片描述在这里插入图片描述
    其实在做Excel的数据回写,一般是采用静态方法,我上面没有采用静态方法的原因是因为我的每一个wb对象使用完之后都是进行关闭的,所以不会有什么影响,但是如果说你的wb对象是在init方法中获取,建议还是回写操作用静态方法。

-------------------------------------学无止境,欢迎大家提意见,共同交流进步----------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值