从零开始数据驱动接口自动化测试-excel操作方法封装-04

本文详细介绍使用Python的openpyxl库进行Excel文件操作的方法,包括读取sheet页数据、单元格数据、行数、行数据列表、列数据列表及全部数据列表,同时介绍了如何根据case_id获取指定行号及数据回写。

首先阐述一下框架中需要的excel的方法
1、获取sheet页内数据
指定方法self.load_excel = openpyxl.load_workbook(self.file_path)
2、获取单元格数据
sheetname = self.load_excel.sheetnames
data = self.load_excel[sheetname[index]]
3、获取行数
cell_data = self.get_sheet_data(index).cell(row=row,column=col).value
4、获取行数据列表
[i.value for i in self.get_sheet_data(index)[row]]
这里self.get_sheet_data(index)[row]是行数据,但是是一个对象,所以要i.value获取其值,获取列数据也是如此
5、获取列数据列表
6、获取case_id指定的行号:用例获取指定依赖
case_id是传入的参数,根据列数据去遍历,如果case_id等于其中一个列数据,就将其计数出行号
7、获取全部数据列表:用于后边的ddt数据驱动
获取到每一行的数据,加入大列表中

# -*- coding: utf-8 -*-
# @Time    : 2020/1/14 10:41
# @Author  : Willam.zja
# @FileName: handle_excel.py
# @Software: PyCharm
# @Blog    :https://blog.youkuaiyun.com/enemy_sprites

import os
import sys
sys.path.append(os.getcwd())
base_path = os.path.abspath(os.path.dirname(os.getcwd()))
import openpyxl

class HandleExcel(object):
    def __init__(self,file_path=None):
        """
        初始化excel数据
        :param file_path:excel路径
        """
        if file_path == None:
            self.file_path = '\\'.join([base_path,'Case\CharConcert.xlsx'])
        else:
            self.file_path = file_path
        self.load_excel = openpyxl.load_workbook(self.file_path)

    def get_sheet_data(self,index=None):
        """
        获取sheet页内容
        :param index: sheet页码
        :return: sheet页下excel的数据
        """
        if index == None:
            index = 0
        sheetname = self.load_excel.sheetnames
        data = self.load_excel[sheetname[index]]
        return data

    def get_table_cell(self,row,col,index=None):
        """
        获取单元格数据
        :param row: 行号
        :param col: 列号
        :param index: sheet页码
        :return: 单元格内数据
        """
        cell_data = self.get_sheet_data(index).cell(row=row,column=col).value
        return cell_data

    def get_lines(self,index=None):
        """
        获取行数,也就是用例数
        :return:
        """
        lines = self.get_sheet_data(index).max_row
        return lines

    def get_row_data(self,row,index=None):
        """
        获取某一行数据列表
        :param row: 行号
        :return: 某一行数据列表
        """
        return [i.value for i in self.get_sheet_data(index)[row]]

    def get_col_data(self,col,index=None):
        """
        获取某一列数据列表
        :param col: 列号
        :param index: sheet页码
        :return: 某一列数据列表
        """
        return [i.value for i in self.get_sheet_data(index)[col]]

    def get_all_data(self):
        """
        获取所有行数据
        :return:
        """
        return [self.get_row_data(i+2) for i in range(self.get_lines()-1)]

    def get_row_num(self,case_id):
        """
        根据case_id查找行号
        :param case_id:
        :return: case_id对应的行号
        """
        num = 1
        for i in self.get_col_data('A'):
            if i == case_id:
                return num
            else:
                num += 1
        return num

    def write_data(self,row,col,value):
        """
        写入数据到excel单元格,用于实际结果和实际数据的回写
        :param row: 行号
        :param col: 列号
        :param value:写入的数据
        :return:
        """
        self.load_excel.active.cell(row,col,value)
        self.load_excel.save(self.file_path)

excel_method = HandleExcel()

if __name__ == '__main__':
    print('获取单元格------>',excel_method.get_table_cell(2, 1))
    print('获取某行数------>',excel_method.get_lines())
    print('获取某一行数据列表------>',excel_method.get_row_data(2))
    print('获取某一列数据列表------>',excel_method.get_col_data('A'))
    print('获取所有数据列表------>',excel_method.get_all_data())
    print('获取所有数据列表------>',excel_method.get_row_num('char_concert_api_case_002'))
    excel_method.write_data(2,15,'pass')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值