ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

学习python入门基础——excel操作

2022-06-17 23:35:33  阅读:149  来源: 互联网

标签:case sheet 入门 python max excel 获取 data datas


一、操作excel

  1.1、人工操作步骤:

    1)打开excel

    2)选择sheet表

    3)选择单元格

  1.2、代码步骤:

    1)work_book对象

    2)sheet对象

    3)cell对象

二、自动化接口测试用例步骤
  2.1、编写测试用例
    1、用例描述(与功能测试用例一样)
    2、请求方法(Request Method)
    3、接口地址(Request URL)
    4、请求参数(Request Payload)
    5、期望结果
    6、实际结果

  2.2、读取测试用例

case_datas=handle_excel.get_case_data_dict()

  2.3、发请求

# 发送post请求
for case in case_datas:
# 用户登陆
res=login_test.user_login(url=case['url'],data=ast.literal_eval(case['data'])) #执行user_login

  2.4、获取响应结果

actual_data = {'code': res['code'], 'msg': res['msg']}          #从res中将code和msg取出

  2.5、和预期结果进行比对(断言)

result=login_test.login_check(expected_data=ast.literal_eval(case['expected_data']),response_data=actual_data)         #执行login_check,进行断言

  2.6、保存测试结果

handle_excel.write_result(rows=case['id']+1,column=7,result=result)

三、openpyxl库

  3.1、安装
      pip install openpyxl
      pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl
  3.2、读取

1、用cell获取单元格数据
from openpyxl import load_workbook #导入openpyxl的load_workbook方法
work_book=load_workbook(filename='testCase.xlsx') #打开excel
sheet=work_book['sheet1'] #选择sheet表(获取sheet对象)
val=sheet.cell(1,2).value #获取表的行和列表(获取单元格数据),openpxl的行和列,索引从1开始
max_rows=sheet.max_row #获取最大行
max_cols=sheet.max_column #获取最大列
print(val,max_rows,max_cols)
2、用iter_rows()批量获取单元格数据
from openpyxl import load_workbook #导入openpyxl的load_workbook方法
work_book=load_workbook(filename='testCase.xlsx') #初始化表格对象:文件路径file_path、表单名称sheet_name
sheet=work_book['sheet1'] #初始化sheet对象
datas=sheet.iter_rows(values_only=True) #获取表格数据
print(list(datas)) #返回嵌套元素,每一行是一个元素

    1)load_workbook()

work_book=load_workbook(filename='testCase.xlsx')       #打开excel
sheet=work_book['sheet1'] #选择sheet表(获取sheet对象)

       filename:excel文件名(路径)
       read_only=False:是否只读,默认False。False:可以读也可以写,True:只能读
       keep_vba=KEEP_VBA:是否保留VBA代码
       data_only=False:是否读取公式计算后的结果,默认False。False:不读取,True:读取计算后的结果
       keep_links=True:是否保留外部链接,默认True。False:不保留,True:保留
    2)cell():获取单元格数据

val=sheet.cell(1,2).value               #获取表的行和列表(获取单元格数据),openpxl的行和列,索引从1开始

    3)max_row:获取最大行

max_rows=sheet.max_row              #获取最大行

    4)max_column:获取最大列

max_cols=sheet.max_column           #获取最大列

    5)iter_rows():批量获取单元格数据

datas=sheet.iter_rows(values_only=True)      #批量获取表格数据

        min_row=None:起始行,默认1
        max_row=None:结束行,默认最大行
        min_col=None:起始列,默认1
        max_col=None:结束列,默认最大列
        values_only=False:返回单元格对象
        values_only=True:返回单元格内容
  3.3、写表
    1)写入

sheet.cell(7,1).value="{'code':1,'msg':'密码为空'}"     #写表

    2)保存

work_book.save(filename='testCase.xlsx')            #保存

四、封装excel

import pprint
from openpyxl import load_workbook
class HandleExcel:
def __init__(self,file_path,sheet_name):
#初始化表格对象
self.work_book = load_workbook(filename=file_path)
#初始化sheet对象
self.sheet = self.work_book[sheet_name]

#获取表头和所有测试用例数据
def __get_all_data(self):
all_datas = list(self.sheet.iter_rows(values_only=True))
#print(list(all_datas))
title=all_datas[0] #获取表头
case_datas=all_datas[1:] #获取测试用例数据
return title,case_datas

#数据拼接(dict)
def get_case_data_dict(self):
case_list=[]
title,case_datas = self.__get_all_data()
for val in case_datas:
result = dict(zip(title,val))
case_list.append(result)
return case_list

if __name__ == '__main__':
cl=HandleExcel('testCase.xlsx','sheet1')
case_list=cl.get_case_data_dict()
pprint.pprint(case_list)


  4.1、导入模块

from openpyxl import load_workbook

  4.2、初始化表格对象:文件路径file_path

self.work_book = load_workbook(filename=file_path)

  4.3、初始化sheet对象

self.sheet = self.work_book[sheet_name]

  4.4、获取表格数据

all_datas = list(self.sheet.iter_rows(values_only=True))
title=all_datas[0] #获取表头
case_datas=all_datas[1:] #获取测试用例数据

  4.5、数据拼接:zip(),将对象数据拼接

case_list=[]
title,case_datas = self.__get_all_data()
for val in case_datas:
result = dict(zip(title,val))
case_list.append(result)

  4.6、用例执行:将测试数据放到业务逻辑中执行

import ast
from homework0508 import HandleExcel
from demo1601 import LoginCase

handle_excel = HandleExcel(file_path='testCase.xlsx',sheet_name='sheet1') #HandleExcel实例化
login_test=LoginCase() #LoginCase实例化

case_datas=handle_excel.get_case_data_dict() #获取测试用例数据

# 发送post请求
for case in case_datas:
# 用户登陆
res=login_test.user_login(url=case['url'],data=ast.literal_eval(case['data'])) #执行user_login

#取预期结果
expected_data=ast.literal_eval(case['expected_data']) #用ast库中的literal_eval()方法将str转成dict

#获取响应结果
actual_data = {'code': res['code'], 'msg': res['msg']} #从res中将code和msg取出

# 断言
result=login_test.login_check(expected_data=expected_data,response_data=actual_data) #执行login_check,进行断言

#保存测试结果
handle_excel.write_result(rows=case['id']+1,column=7,result=result)

标签:case,sheet,入门,python,max,excel,获取,data,datas
来源: https://www.cnblogs.com/mango-93/p/16387141.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有