一、pandas库解析测试用例代码详细说明
1.pandas读取文件的方法
读取excel文件: pandas.read_excel(excel文件路径) 读取csv文件: pandas.read_csv(csv文件路径)
2.loc和iloc方法说明
loc[行索引,列标题] 和 iloc[行索引] 方法的区别在于中括号【】中所需要的参数不一致,但是获取到的数据结果是一致的
m=df.loc[0,title].values
print(m)
n=df.iloc[0].values
print(n)
代码运行结果,m和n的打印结果一致:
m的打印结果:['case0001' 'common_api_request' '通用API请求' '关键字搜索' '关键字正常搜素能显示结果'
'5|9组合搜索横流南路铭兴街' 'yes' 'GET' '/zhs/bs/tips' 'params'
'{"query":"横流南路铭兴街","ak":"ebf48ecaa1fd436fa3d40c4600aa051f","region":"441900"}'
'json' '{"result":[{"uid":"123330148"}]}' ]
n的打印结果:['case0001' 'common_api_request' '通用API请求' '关键字搜索' '关键字正常搜素能显示结果'
'5|9组合搜索横流南路铭兴街' 'yes' 'GET' '/zhs/bs/tips' 'params'
'{"query":"横流南路铭兴街","ak":"ebf48ecaa1fd436fa3d40c4600aa051f","region":"441900"}'
'json' '{"result":[{"uid":"123330148"}]}' ]
3.zip()函数和dict()函数
zip()函数可以接收多个可迭代对象,然后把每个可迭代对象中的第i个下标元素组合在一起,形成一个新的迭代器,类型为元组
a = ['a','b','c']
b = ['4','5','6']
l= zip(a,b)
print(l)
打印结果,打印的是一个元组类型的迭代器:
<zip object at 0x000001D37710C300>
迭代器数据提取方法:
next()、list()、for循环 ;dict()
a = ['a','b','c']
b = ['4','5','6']
l= zip(a,b)
for i in l:
print(i)
打印结果:
('a', '4')
('b', '5')
('c', '6')
dict()函数可以传一个zip()函数,将上述元组数据转换成字典
a = ['a','b','c']
b = ['4','5','6']
print(dict(zip(a,b)))
打印结果:
{'a': '4', 'b': '5', 'c': '6'}
4.append()和extend()方法都是用来添加数据到list末尾的,两者的区别:
append()添加的时候会把添加的数据当成一个整体进行添加,允许添加任意类型的数据; extend()添加的时候会把添加的数据迭代进行添加,只允许添加可迭代对象数据(可迭代对象: 能用for循环进行迭代的对象就是可迭代对象, 比如:字符串,列表,元祖,字典,集合等等 )
二、pandas库解析excel类型的测试用例
1.excel类型测试用例文件示例
caseNo | action_keyword | action_name | function_module | case_title | case_description | is_run | request_method | request_url | request_type_data | request_body | response_type_data | expect_result |
case0001 | common_api_request | 通用API请求 | 关键字搜索 | 关键字正常搜素能显示结果 | 5|9组合搜索横流南路铭兴街 | yes | GET | /zhs/bs/tips | params | {"query":"横流南路铭兴街","ak":"ebf48ecaa1fd436fa3d40c4600aa051f","region":"441900"} | json | {"result":[{"uid":"123330148"}]} |
2. excel类型测试用例文件解析
import pandas as pd
import os,xlrd
#获取excel文件路径
datapath = os.path.split(os.path.abspath(__file__))[0]
excel_path = os.path.join(datapath,"testexcel.xls")
#通过文件路径读取excel文件内容
df = pd.read_excel(excel_path)
#获取excel文件每一列的第一行的名称
title = df.columns.values
#获取excel文件每一行的索引值,从第二行开始计算,索引值从0开始
num = df.index.values
caselists=[]
for i in num :
caselist=[]
casevalue = df.loc[i,title].values
print(casevalue)
#zip函数将两个列表的数值按照索引一一对应的方式,以元组的方式返回
#dict函数将列表中的元组转换成字典的格式
caseinfo = dict(zip(title, casevalue))
caselist.append(caseinfo)
caselists.extend(caselist)
# print(caseinfo)
print(caselists)
3.excel类型测试用例文件解析代码运行结果
[{'caseNo': 'case0001', 'action_keyword': 'common_api_request', 'action_name': '通用API请求', 'function_module': '关键字搜索', 'case_title': '关键字正常搜素能显示结果', 'case_description': '5|9组合搜索横流南路铭兴街', 'is_run': 'yes', 'request_method': 'GET', 'request_url': '/zhs/bs/tips', 'request_type_data': 'params', 'request_body': '{"query":"横流南路铭兴街","ak":"ebf48ecaa1fd436fa3d40c4600aa051f","region":"441900"}', 'response_type_data': 'json', 'expect_result': '{"result":[{"uid":"123330148"}]}', 'verify': nan, 'save': nan}]
三、pandas库解析csv类型的测试用例
1.csv类型测试用例文件解析
#获取csv文件路径
datapath = os.path.split(os.path.abspath(__file__))[0]
csv_path = os.path.join(datapath,"testcsv.csv")
#通过文件路径读取csv文件内容
df = pd.read_csv(csv_path)
#获取csv文件每一列的第一行的名称
title = df.columns.values
#获取csv文件每一行的索引值,从第二行开始计算,索引值从0开始
num = df.index.values
caselists=[]
for i in num :
caselist=[]
casevalue = df.loc[i,title].values
print(casevalue)
#zip函数将两个列表的数值按照索引一一对应的方式,以元组的方式返回
#dict函数将列表中的元组转换成字典的格式
caseinfo = dict(zip(title, casevalue))
caselist.append(caseinfo)
caselists.extend(caselist)
print(caselists)