Python接口自动化之yaml配置文件

news2024/12/28 3:50:18

Python自动化测试:7天练完这60个实战项目,年薪过35w。

软件测试技术分享总结 

在自动化过程中,需要使用配置文件储存数据,比如数据库信息、账号信息、域名等。

其中,yaml文件是一种配置文件类型,相比较iniconf配置文件来说,更加的简洁,操作也更加简单,同时可以存放不同类型的数据。

以下主要介绍yaml语法、yaml存储数据,封装类读写yaml配置文件。

yaml介绍及使用

01 yaml简介

YAML 语言( /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。

YAML 是一种非常灵活的格式,几乎是 JSON的超集。除了支持注释、换行符分隔、多行字符串、裸字符串和更灵活的类型系统之外,YAML 也支持引用文件,以避免重复代码。

02 yaml语法规则

基本语法规则:

  • 大小写敏感;

  • 使用缩进表示层级关系;

  • 缩进时不允许使用Tab键,只允许使用空格;

  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可;

  • # 表示注释,从这个字符一直到行尾,都会被解析器忽略;

03 yaml数据结构

  • 对象:键值对的集合,又称为映射(mapping)、哈希(hashes) 、字典(dictionary);

  • 数组:一组按次序排列的值,又称为序列(sequence) 、列表(list);

  • 纯量(scalars):单个的、不可再分的值;

▌对象

Map(属性和值)(键值对)的形式:

key:(空格)value :表示一对键值对,空格不可省略。

person:
    name: vivi
    age: 18

一行写法:

person:{name: vivi,age: 18}

相当于JSON格式:

{"name":"vivi","age":18}

数组

一组连词线开头的行,构成一个数组。数组前加有 “-” 符号,符号与值之间需用空格分隔。

color:
   - red
   - blue
   - green

一行写法:

color: [red,blue,green]

相当于JSON:

["red","blue","green"]

纯量

单个的、不可再分的值。(如:字符串、bool值、整数、浮点数、时间、日期、null等)

n1: 8
n2: 8.8
n3: true
n4: false
n5: 'vivi'

yaml配置文件的使用

01  yaml配置文件准备

在项目下新建一个目录config,在目录下新建一个文件config.yaml。

在config.yaml配置文件中写入数据库配置。

mysql:
  host: "127.0.0.1"
  port: 3306
  user: "vivi"
  password: "123456"
  db: "ITester"
  charset: "utf8"

02  yaml配置文件格式校验

刚了解yaml的同学,可能对yaml格式掌握不熟练,出现格式错误,这里推荐一个在线网站,用于校验我们写的yaml文件格式是否正确。

在线地址:

http://www.bejson.com/validators/yaml/ 

yaml配置文件读写

python中读取yaml文件前需要安装pyyaml和导入yaml模块。

01  安装pyYaml

在python中读取yaml文件,需要用到第三方模块PyYaml。

安装命令:

pip install pyYaml

02  yaml模块源码解析

从yaml模块中提取出loaddump函数。

def load(stream, Loader=None):
    """
    Parse the first YAML document in a stream
    and produce the corresponding Python object.
    """
    if Loader is None:
        load_warning('load')
        Loader = FullLoader
    loader = Loader(stream)
    try:
        return loader.get_single_data()
    finally:
        loader.dispose()
        
def dump(data, stream=None, Dumper=Dumper, **kwds):
    """
    Serialize a Python object into a YAML stream.
    If stream is None, return the produced string instead.
    """
    return dump_all([data], stream, Dumper=Dumper, **kwds)

load:

将yaml流转化为python字典;

dump:

将python对象转化为yaml流;

03  读写yaml配置文件

将读写yaml配置文件的类进行封装。

在common目录下新建一个文件,config_handler.py用于读写yaml。

config_handler.py

import yaml

class YamlHandler:
    def __init__(self,file):
        self.file = file

    def read_yaml(self,encoding='utf-8'):
        """读取yaml数据"""
        with open(self.file, encoding=encoding) as f:
            return yaml.load(f.read(), Loader=yaml.FullLoader)
            
    def write_yaml(self, data, encoding='utf-8'):
        """向yaml文件写入数据"""
        with open(self.file, encoding=encoding, mode='w') as f:
            return yaml.dump(data, stream=f, allow_unicode=True)

if __name__ == '__main__':
    data = {
        "user":{
            "username": "vivi",
            "password": "123456"
        }
    }
    # 读取config.yaml配置文件数据
    read_data = YamlHandler('../config/config.yaml').read_yaml()
    # 将data数据写入config1.yaml配置文件
    write_data = YamlHandler('../config/config1.yaml').write_yaml(data)
    print(read_data)

运行结果为:

{'mysql': {'host': '127.0.0.1', 'port': 3306, 'user': 'vivi', 'password': '123456', 'db': 'ITester', 'charset': 'utf8'}}

写入到config1.yaml的数据。

config1.yaml

user:
  password: '123456'
  username: vivi

总结:本文主要介绍yaml语法、yaml储存数据,封装类读取yaml配置文件。

最后,绵薄之力

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

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

资料获取方式:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

职场已是00后的天下了,起薪20k,想都不敢想

2023年很卷吗?不,只能说你还得学! 都说00后已经躺平了,但是有一说一,该卷的还是卷! 这不,前段时间我们公司新招来了一个00后小伙,工作都没2年,跳槽到我们公司就起薪20K&…

基于linux安装部署clickhouse+基本操作

基于linux安装部署clickhouse基本操作 1.clickhouse简介 ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实…

一个年薪30w软件测试员的职业规划,献给还在迷茫中的朋友

如果你做了几年的功能测试,如今很迷茫,不知道该往哪里走,那么请看过来! 一:技术方向 1. 测试开发工程师: 支撑测试部门,一般来说主要负责设计&编写测试部门所需的测试工具,提…

华为OD机试真题 Java 实现【寻找峰值】【牛客练习题】

一、题目描述 给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。 1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于; 2.假设 nums[-1] = nums[n] = -\infty−∞; 3.对于所有有效的…

被迫在小公司熬了2年,现在我终于进了腾讯测试岗...

其实两年前校招的时候就往腾讯投了一次简历,结果很明显凉了,随后这个理想就被暂时放下了,但是这个种子一直埋在心里,想着总有一天会再次挑战的。 其实这两年除了工作以外,其余时间基本上都在学习,打磨自己…

Ubuntu系统镜像下载,国内镜像站大全(山大/清华/阿里/浙大/中科大...)

装Ubuntu,是很多理工科同学入门的第一个挑战,首先我们就需要找到一个能用的iso镜像,根据你的网络环境的不同,不同的站点下载速度会不一样,下面列举一下几个比较好用的,都是来自Ubuntu官方推荐国内镜像站链接…

一起来学习Vue2吧

虽然Vue3已经出来好一阵子了,但就目前而言,Vue2在市场上还是会占一大部分的,因为一些老项目是用Vue2写的,后期维护也是需要Vue2,而且学会Vue2,Vue3你也会的差不多了,到后面稍微看一下理解一下Vu…

[5]PCB设计实验|卷积神经网络基础|零基础入门深度学习(4) 卷积神经网络|14:00~14:55

资料来源:零基础入门深度学习(4) - 卷积神经网络 - 作业部落 Cmd Markdown 编辑阅读器 目录 1. Relu激活函数 2. 全连接网络VS卷积网络 3. 卷积神经网络 3.1 网络架构 3.2 三维的层结构 4. 卷积神经网络输出值的计算 5. Pooling层输出值的计算 6. 全连…

【自动化测试基础】Appium自动化环境搭建保姆级教程

APP自动化测试运行环境比较复杂,稍微不注意安装就会失败。我见过不少朋友,装了1个星期,Appium 的运行环境还没有搭好的。 搭建环境本身不是一个有难度的工作,但是 Appium 安装过程中确实存在不少隐藏的比较深的坑,如果…

开源赋能 普惠未来|腾讯寄语2023开放原子全球开源峰会

腾讯长期秉承科技向善的宗旨,通过通信和社交服务连接全球逾 10 亿人,提供云计算、广告、金融科技等一系列企业服务。 作为开放原子开源基金会(以下简称“基金会”)发起人之一,腾讯坚定拥抱开源,全力支持开…

【最新计算机毕业设计 本科 大专 游戏方向 源码】

2022年 - 2023年 最新计算机毕业设计 本科 大专 游戏方向 源码 下载前必看:纯小白教程,unity两种格式资源的使用方法,1打开现有项目、2导入package 大专毕设源码:数媒专业、计算机专业、电子专业通用50多款大专毕设小游戏【源码】…

转行程序员,自学可以吗?35岁会被裁员吗?

大家好,欢迎来到停止重构的频道。 本期我们聊一些技术以外的分享。 一个非科班出身的人转行程序员难吗? 自学可以吗? 我也不是计算机相关专业毕业的,以下聊的都是我的一些真实经历,希望能给想要进入软件行业的非科班…

Centos7安装下载的mysql8+

1.官网下载 MySQL 安装包 1.1选择版本及下载 1、官网地址 https://dev.mysql.com/downloads/mysql/ 2、选择下载 MySQL 的 Linux 系统版本 Select Operating System: 选择 Red Hat ,CentOS 是基于红帽的,Select OS Version: 选择 linux 7 3、选择要下…

51单片机银行自助排队叫号系统VIP热敏打印功能DY-SV17F语音播报

实践制作DIY- GC0138-银行自助排队叫号系统VIP 基于51单片机设计---银行自助排队叫号系统VIP 二、功能介绍: STC89C52最小系统板0.96寸OLED显示器DY-SV17F语音串口语音播报模块DS1302北京时间热敏打印机1个业务选择(取钱或者存钱)1个普通取号…

chatgpt赋能python:Python后门:你需要知道的一切

Python后门:你需要知道的一切 Python是一种广泛使用的编程语言,由于其易学易用、灵活且高效的特点,越来越多的企业和组织采用Python构建应用程序和Web应用。然而,正因为Python的方便性,也使其成为攻击者植入后门程序的…

机器学习 | 聚类问题

一、K均值聚类 这里我们用鸢尾花数据及进行聚类分析,这种含有标签数据的数据集,只要不调用标签数据,就可以为无监督学习所采用。鸢尾花数据具有4个特征,为了可视化这里选取前两个特征进行聚类分析并指定聚为3类。 #导入库 impor…

大型 3D 互动开发和优化实践 | 京东云技术团队

开发背景 得益于“元宇宙”概念在前段时间的爆火,各家公司都推出了使用 3D 场景的活动或频道。 3D 场景相比传统的 2D 页面优点是多一个维度,同屏展示的内容可以更多,能完整的展示物体、商品的信息。 相应带来的缺点是用户使用方式改变&…

yolov8模型训练结果分析以及如何评估yolov8模型训练的效果

1.运行结果目录 一、 confusion_matrix_normalized.png和confusion_matrix.png 混淆矩阵 混淆矩阵以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值,矩阵的列表示预测值。 TP(True Positiv…

python 创建Django项目基础

一. 安装Django pip install django 默认安装最新版本二. 创建一个Django项目 三、运行项目 创建好Django项目后,我们就可以运行了 使用命令 python manage.py runserver四、目录结构 五、创建一个文件views用来存放方法 在创建的文件中写入以下方法 def sa…

使用GCN根据颗粒图像预测对应性能

之前做一个小实验写的代码,本想创建个git repo,想了想好像没必要,直接用篇博文记录一下吧。 对应资源 : https://download.csdn.net/download/rayso9898/87865298 0. 大纲 0.1 代码说明 dataGeneration.py -> RSA生成n张图像&…