标签:book text 需要 yam 驱动 信息 读取excel 数据 获取
yml
文件是一种特殊的文件格式,该格式的文件名均以.yml
结尾。-
表示列表,key: value
表示字典。
case.yml
文件中存放的内容
-
title: framwork
text: selenium
-
title: framwork
text: appium
-
title: language
text: python
-
title: language
text: C语言
import yaml
with open('case.yml', mode='r', encoding='utf-8') as f:
result = yaml.load(f, Loader=yaml.FullLoader)
print(result)
print(type(result))
# 输出结果
[{'title': 'framwork', 'text': 'selenium'}, {'title': 'framwork', 'text': 'appium'}, {'title': 'language', 'text': 'python'}, {'title': 'language', 'text': 'C语言'}]
<class 'list'>
import unittest
from ddt import ddt, file_data
@ddt
class Test_baidu(unittest.TestCase):
@file_data('case.yml')
def test_baidu01(self, title, text):
print(title, text)
@file_data('case.yml')
def test_baidu02(self, **kwargs):
print(kwargs.get('title'), kwargs.get('text'))
if __name__ == '__main__':
unittest.main()
# 输出结果
framwork selenium
framwork appium
language python
language C语言
framwork selenium
framwork appium
language python
language C语言
xlsx是excel的一种数据文件格式。
case.xlsx
文件中存放的数据
id | excepted | data |
---|---|---|
1 | {‘url‘: ‘http://www.baidu.com/‘, ‘text‘: ‘selenium‘} | (‘python1‘, ‘123456‘, ‘123456‘) |
2 | {‘url‘: ‘http://www.baidu.com/‘, ‘text‘: ‘appium‘} | (‘python2‘, ‘1234567‘, ‘123456‘) |
3 | {‘url‘: ‘http://www.baidu.com/‘, ‘text‘: ‘python‘} | (‘python3‘, ‘1234567‘, ‘1234567‘) |
4 | {‘url‘: ‘http://www.baidu.com/‘, ‘text‘: ‘求职‘} | (‘python4‘, ‘123456‘, ‘1234567‘) |
读取该文件中的数据
import openpyxl
class Case(object):
'''
用来存储用例
'''
def __init__(self, case):
'''
初始化用例
:param case:zip对象转换成的列表 --> [(key1, value1), (key2, value2), ...]
'''
for item in case:
# 得到每一个用例对象
setattr(self, item[0], item[1])
class ReadExcel(object):
'''
读取excel表单数据
'''
def __init__(self, filename, sheetname):
'''
:param filename: 需要读取数据的xlsx文件名
:param sheetname: 需要读取数据的表单名
'''
self.workbook = openpyxl.load_workbook(filename)
self.sheet = self.workbook[sheetname]
def read_data_by_dict(self):
'''
按行读取数据
每个用例存储在一个字典中
:return: 返回读取到的表单数据
'''
# 将获取到的表单数据转化成列表格式
rows_data = list(self.sheet.rows)
# 获取表头信息
titles = []
for title in rows_data[0]:
titles.append(title.value)
# 获取用例
cases = []
for case in rows_data[1:]:
# 获取每一行的数据
data = []
for cell in case:
if isinstance(cell.value, str):
# 如果为字符串类型,则将其转化为python类型
data.append(eval(cell.value))
else:
data.append(cell.value)
# 将表头作为键,对应的数据作为值组成键值对,得到每一个用例
case_data = dict(zip(titles, data))
# 将得到的用例插入到总用例中
cases.append(case_data)
self.workbook.close()
return cases
def read_data_by_obj(self):
'''
按行读取数据
每个用例存储在一个对象中
:return: 返回读取到的表单数据
'''
# 将获取到的表单数据转化成列表格式
rows_data = list(self.sheet.rows)
# 获取表头信息
titles = []
for title in rows_data[0]:
titles.append(title.value)
# 获取用例
cases = []
for case in rows_data[1:]:
# 获取每一行的数据
data = []
for cell in case:
if isinstance(cell.value, str):
# 如果为字符串类型,则将其转化为python类型
data.append(eval(cell.value))
else:
data.append(cell.value)
# 得到表头和数据的对应值
case_data = list(zip(titles, data))
# 创建一个Case类的对象,用来存储用例数据
case_obj = Case(case_data)
# 将得到的用例对象插入到总用例中
cases.append(case_obj)
self.workbook.close()
return cases
def read_data_by_column(self, column_list):
'''
读取指定列的数据
每个用例存储在一个对象中
:param column_list: 需要读取的列组成的列表 -->列表类型
:return: 返回读取到的表单数据
'''
# 用来存储测试用例
cases = []
# 用来存储表头信息
titles = []
for row in range(1, self.sheet.max_row+1):
# 判断是否为第一行
if row != 1:
# 用来存储每一行的数据
datas = []
for column in column_list:
data = self.sheet.cell(row, column).value
if isinstance(data, str):
datas.append(eval(data))
else:
datas.append(data)
# 定义一个Case类的对象
case_obj = Case(list(zip(titles, datas)))
# 将每一个用例对象插入到总用例列表中
cases.append(case_obj)
else:
for column in column_list:
title = self.sheet.cell(row, column).value
titles.append(title)
self.workbook.close()
return cases
if __name__ == '__main__':
read_excel = ReadExcel('case.xlsx', 'Sheet1')
cases1 = read_excel.read_data_by_dict()
for case in cases1:
print(case)
cases2 = read_excel.read_data_by_obj()
for case in cases2:
print(case.id, case.excepted, case.data)
cases3 = read_excel.read_data_by_column([1, 3])
for case in cases3:
print(case.id, case.data)
# 输出结果
{'id': 1, 'excepted': {'url': 'http://www.baidu.com/', 'text': 'selenium'}, 'data': ('python1', '123456', '123456')}
{'id': 2, 'excepted': {'url': 'http://www.baidu.com/', 'text': 'appium'}, 'data': ('python2', '1234567', '123456')}
{'id': 3, 'excepted': {'url': 'http://www.baidu.com/', 'text': 'python'}, 'data': ('python3', '1234567', '1234567')}
{'id': 4, 'excepted': {'url': 'http://www.baidu.com/', 'text': '求职'}, 'data': ('python4', '123456', '1234567')}
1 {'url': 'http://www.baidu.com/', 'text': 'selenium'} ('python1', '123456', '123456')
2 {'url': 'http://www.baidu.com/', 'text': 'appium'} ('python2', '1234567', '123456')
3 {'url': 'http://www.baidu.com/', 'text': 'python'} ('python3', '1234567', '1234567')
4 {'url': 'http://www.baidu.com/', 'text': '求职'} ('python4', '123456', '1234567')
1 ('python1', '123456', '123456')
2 ('python2', '1234567', '123456')
3 ('python3', '1234567', '1234567')
4 ('python4', '123456', '1234567')
标签:book text 需要 yam 驱动 信息 读取excel 数据 获取
原文地址:https://www.cnblogs.com/aaron-zhou/p/12274975.html