不管是做Ui自动化和接口自动,代码和数据要分离,会用到Text,Excel,Yaml。今天讲讲如何读取文件数据
记住一点:测试的数据是不能写死在代码里面的,这个是原则问题
#! /usr/bin/python3
# @Author : 加入技术分享群 721945856
from pathlib import Path
class ReadPath():
"""基本路径"""
BasePath = Path(__file__).resolve().parents[1]
# print(BasePath)
def ini_path(self):
"""获取ini文件目录"""
ini_path = ReadPath.BasePath/"data"/"test.ini"
# print(ini_path)
return ini_path
def excel_path(self):
"""获取excel文件目录"""
excel_path = ReadPath.BasePath/"data"/"test.xlsx"
# print(excel_path)
return excel_path
def yaml_path(self):
"""获取yaml目录"""
yaml_path = ReadPath.BasePath/"data"/"test.yaml"
# print(yaml_path)
return yaml_path
需求:
1.打开txt文件
2.读取每一行数据
3.将文件存放在列表中(方便循环读取)
#!/usr/bin/python3
with open("E:/test.txt", "r") as f:
#readlines读取文件内每一行数据
for line in f.readlines():
line = line.strip('\n') #去掉列表中每一个元素的换行符
# split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
data = (line.split(","))
print(data)
运行结果:
大家都知道,测试用例是写在Excel里的,如果是少量的用例很容易处理,如果用例成百上千条呢?
自动化测试的话,需要对用例数据进行读取,那必须循环读取才可以实现自动化。那么问题来了,怎么做呢?
用例如下图:
1、用列表存放这些用例数据,所以要用到列表
2、每一行用例要存放在字典内,所以需要用到字典
3、循环写入到字典,然后存放到列表内
#! /usr/bin/python3
# @Author : 加入技术分享群 721945856
import xlrd # pip install xlrd==1.2.0 最新版本不支持xlsx
from base.base_path import ReadPath
class ExcelData:
"""读取excl表接口数据"""
def __init__(self):
# 打开文件
self.excel = xlrd.open_workbook(ReadPath().excel_path())
# 通过下标定位表格
self.sheet = self.excel.sheet_by_index(0)
# 行: 4 和列数: 5
self.rows, self.cols = self.sheet.nrows, self.sheet.ncols
print(self.rows, self.cols)
def read_execl(self):
# 获取第一行数据key
first_row = self.sheet.row_values(0)
# print(first_row) # [编号,method,host, params, result]
# 定义空列表,用于存放用例数据
self.result = []
# 从第一行用例开始循环(1, 4) 循环三次1,2,3
for i in range(1, self.rows):
# 定义空字典
info_dict = {}
# 每1次大循环要循环5次(字典里有5组数据)
for j in range(0, self.cols):
# j=0,1,2,3,4
# 添加到字典 (1)[0]---第2行第1例的值,依次循环
info_dict[first_row[j]] = self.sheet.row_values(i)[j]
self.result.append(info_dict)
print(self.result)
return self.result
if __name__ == "__main__":
ex = ExcelData()
ex.read_execl()
运行结果:
yaml文件后缀名为yaml,如文名件.yaml
send_mail:[email protected]
send_code:ibzwpvisjyhrbhcb
get_mail:[email protected]
yaml为第3方模块,需另行安装pip install pyyaml
问题解析
1.定义文件地址
2.打开yaml文件
3.读取文件后转成字典以方便读取
#! /usr/bin/python3
# @Author : 加入技术分享群 721945856
from base.base_path import ReadPath
import yaml
class ReadYaml():
def __init__(self):
# 获取yaml路径
self.yaml_path = ReadPath().yaml_path()
def read_yaml(self):
# open方法打开直接读出来
file = open(self.yaml_path, 'r', encoding='utf-8')
result = file.read()
dict = yaml.load(result, Loader=yaml.FullLoader) # 用load方法转字典
print(dict)
return
read = ReadYaml()
read.yaml_path()
运行结果:
现在我邀请你进入我们的软件测试学习交流群,备注“csdn”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。