网站首页 > 技术文章 正文
应用背景:在数据驱动、参数化和批量处理Excel数据时,需要先读取Excel数据给实际接口传参。下面看下如何使用Python的xlrd库读取Excel数据。
一、安装xlrd库
方法1:打开cmd命令行,在线安装xlrd库(需要配置好Python环境)
注意:因为python3对xlrd里面的迭代方法作了修改,所以最高版本只能安装1.2.0或安装1.2.0之前的版本。
安装方式1:pip install xlrd==1.2.0 or pip install xlrd==0.9.3
python环境配置,配置项如下:
C:\Python39
C:\Python39\Scripts
C:\Python39\Lib\site-packages
方法2:在pycharm中,在线安装xlrd库
二、xlrd库使用
首先准备Excel数据文件,如下图:
其次,在代码中实现,具体如下
#导入xlrd库
import xlrd
def get_excelData():
try:
#第一步打开Excel文件
current_file = xlrd.open_workbook("login.xlsx")
#第2步,获取工作表格名称
table = current_file.sheet_by_name("login")
#第3步, 获取工作表的行(即每行数据)
nrows = table.nrows
#第4步,当表格中每行数据大于1时,开始读取数据(即表格存在数据时,才去读取)
if nrows > 1:
# 获取第一行字段,作为每列数据的键,即key
keys = table.row_values(0)
#定义空列表用于存储读取的全部数据
listApiData = []
# 从第2行开始遍历数据
for rowls in range(1, nrows):
#遍历每行对应的数据
values = table.row_values(rowls)
# keys,values组合转换为字典
api_dict = dict(zip(keys, values))
#每次遍历的数据添加到列表
listApiData.append(api_dict)
#返回最终的列表数据
return listApiData
else:
print("表格数据为空!")
return None
except Exception as e:
print("读取Excel文件异常,请检查!")
打印输出结果:
all_data=get_excelData()
print("excel全部数据:\n {}".format(all_data))
只读取字段为body下的数据
#只读取字段为body下的数据
for i in range(len(all_data)):
print(f"body数据: {all_data[i]['body']}")
三、在项目中应用
前面的方法我们都学会了,下面就可以结合unittest里面的数据驱动ddt或者pytest里面的方法parametrize()使用了
1.在unittest中使用(下面是部分代码,结合自己的项目修改)
#读取Excel测试数据
testData = ReadExcel(caseFile.autotest_file, "login").read_data()
@ddt
class TestOrderListQuery(unittest.TestCase):
'''用户登录接口'''
def setUp(self):
print("=========开始测试=========")
@data(*testData)
def test_login(self,loginData):
'''用户登录接口'''
rowNum = int(loginData['ID'][-3:])
#登录接口地址
logInUrl=Urls().loginUrl()
#接口请求
res = HttpHandle().post(url=logInUrl, data=loginData['body'], headers=logInHeader)
res_json=res.json()
Log.info(f"登录接口返回结果:{res.text}")
2.在pytest中使用(下面是部分代码,结合自己的项目修改)
#读取Excel测试数据
testData = ReadExcel(caseFile.alarm_checkfile, 'alert').read_data()
class TestAlertParamsCheck:
'''告警接口参数检查'''
@pytest.fixture()
@allure.title("前置方法")
def test_Login(self):
"""fixture method"""
print("==============test_Login OK===============")
res_json=200
assert res_json == 200
@pytest.mark.usefixtures("test_Login")
@pytest.mark.parametrize("params",testData,ids=[testData[i]['title'] for i in range(len(testData))])
@allure.step("pytest parametrize")
@allure.description("参数化验证多组用例{}".format("params"))
def test_alertParamsCheck(self,params):
title=params['title']
'''告警接口参数验证-{}'''.format(title)
rowNum = int(params['ID'][-3:])
Log.info("******* 正在执行用例 ->{0} *********".format(params['title']))
Log.info("请求方式: {0},请求URL: {1}".format(params['method'], str(params['url']).format(Urls().alertUrl())))
Log.info("接口请求参数: {}".format(params['params']))
# 发送请求
origin_data = params['params']
alert_res = HttpHandle().post(url=Urls().alertUrl(),data=origin_data,headers=header)
alert_res_json = alert_res.json()
Log.info("接口返回结果: {}".format(alert_res_json))
好啦,今天的内容就是这些,后续会继续分享接口测试工具相关的专题,希望对大家有所帮助!
猜你喜欢
- 2025-06-12 python读取excel文件 xlrd模块(如何用python读取excel)
- 2025-06-12 怎么在Python中操作Excel文件?(python2.7操作excel)
- 2025-06-12 Excel变天!微软把Python「塞」进去了,直接可搞机器学习
- 2025-06-12 Python自动化-Excel:pandas新建、读取excel文件
- 2025-06-12 Python之Pandas使用系列(八):读写Excel文件的各种技巧
- 2025-06-12 十分钟教会你使用Python操作excel,内附步骤和代码
- 2025-06-12 Python读取与写入Excel模块:openpyxl
- 2025-06-12 Python玩转Excel,使用Python读取Excel文件如此简单!
- 2025-06-12 Python自动化:openpyxl读取excel(openpyxl读写excel)
- 2025-06-12 Python自动化:xlrd读取excel(python xlrd读取excel)
- 266℃Python短文,Python中的嵌套条件语句(六)
- 264℃python笔记:for循环嵌套。end=""的作用,图形打印
- 263℃PythonNet:实现Python与.Net代码相互调用!
- 259℃Python实现字符串小写转大写并写入文件
- 258℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 117℃原来2025是完美的平方年,一起探索六种平方的算吧
- 98℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 91℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python中怎么给属性增加类型检查或合法性验证?
- 如何把python绘制的动态图形保存为gif文件或视频
- Python XOR异或 操作(python异或函数)
- 每天学点Python知识:使用制表符或换行符来添加空白
- Python3+ 变量命名全攻略:PEP8 规范 + 官方禁忌 + 实战技巧,全搞懂!
- python之类的定义和对象创建篇(如何在python中定义一个属于对象的数据成员?)
- Python函数调用常见的8个错误及解决方案
- Python学不会来打我(30)python模块与包详解
- 《防秃指南:Python高频考点串烧(附翻车现场实录)》
- Python 面向对象:掌握类的继承与组合,让你的代码更高效!
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)