Python自动化测试Text,Excel,Yaml文件读取

前言

不管是做Ui自动化和接口自动,代码和数据要分离,会用到Text,Excel,Yaml。今天讲讲如何读取文件数据

记住一点:测试的数据是不能写死在代码里面的,这个是原则问题

结构目录

在这里插入图片描述

封装目录地址 

#! /usr/bin/python3
# @Author :

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

读取Text

需求:

在这里插入图片描述

问题解析

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

大家都知道,测试用例是写在Excel里的,如果是少量的用例很容易处理,如果用例成百上千条呢?

自动化测试的话,需要对用例数据进行读取,那必须循环读取才可以实现自动化。那么问题来了,怎么做呢?

用例如下图:

在这里插入图片描述

问题解析

1、用列表存放这些用例数据,所以要用到列表

2、每一行用例要存放在字典内,所以需要用到字典

3、循环写入到字典,然后存放到列表内

#! /usr/bin/python3
# @Author 


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,如文名件.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 

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()

运行结果:

在这里插入图片描述

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

猜你喜欢

转载自blog.csdn.net/kk_lzvvkpj/article/details/130160324