python接口自动化测试二十九:yaml配置文件的写和读
yaml 通常用来存储数据,类似于json
安装:pip install ruamel.yaml

建一个空的yaml文件

写入数据


import os
from ruamel import yaml
# 将字典写入到yaml
data = {
'host1': '123',
'host2': 456,
'host3': {'asd': '123'},
'host4': [12, '234', ['wer', 234]],
'host5': {'asd': '123', 'eee': [12, '234', ['wer', 234]]}
} curpath = os.path.dirname(os.path.realpath(__file__)) # 当前脚本路径
yamlpath = os.path.join(curpath, "config.yaml") # 在当前脚本路径中,找到config.yaml文件 # 写入到yaml文件
with open(yamlpath, "w", encoding="utf-8") as f:
yaml.dump(data, f, Dumper=yaml.RoundTripDumper)
读取yaml文件

import os
from ruamel import yaml curpath = os.path.dirname(os.path.realpath(__file__)) # 当前脚本路径
yamlpath = os.path.join(curpath, "config.yaml") # 在当前脚本路径中,找到config.yaml文件
# 读取yaml文件
data = yaml.load(open(yamlpath, "r").read(), Loader=yaml.Loader)
print(data)
print(data['host4'][1])
封装起来以后好调用




import os
from ruamel import yaml class WRYaml:
""" yaml文件的读和写 """ def __init__(self):
""" 指定yaml文件的路径 """
self.configpath = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'config') def read_yaml(self, yaml_file='conf.yaml'):
""" 读取yaml里面里面的数据"""
try:
with open(os.path.join(self.configpath, yaml_file), "r", encoding='utf8') as f:
return yaml.load(f, Loader=yaml.Loader)
except Exception as error:
print(f'读取yaml失败,错误如下:{error}')
return False def write_yaml(self, data, yaml_file='conf.yaml', mode='w'):
""" 往yaml里面写入数据
yamlFile:yaml文件名
data:要写入的数据
mode:写入方式: w,覆盖写入, a,追加写入
将原数据读取出来,如果没有要加入的key,则创建一个,如果有,则执行key下面的数据修改
"""
try:
old_data = self.read_yaml(yaml_file) or {}
for data_key, data_value in data.items():
if not old_data.get(data_key):
old_data.setdefault(data_key, {})
for value_key, value_value in data_value.items():
old_data[data_key][value_key] = value_value
with open(os.path.join(self.configpath, yaml_file), mode, encoding="utf-8") as f:
yaml.dump(old_data, f, Dumper=yaml.RoundTripDumper)
return True
except Exception as error:
print(f'yaml文件写入失败,错误如下:\n{error}')
return False if __name__ == "__main__":
wryaml = WRYaml()
# 写入数据文件
data = {
'test': {'AAA': 134511, 'BBB': 333}
}
print(wryaml.write_yaml(yaml_file='conf.yaml', data=data))
# 读取数据文件
print(wryaml.read_yaml('conf.yaml'))
python接口自动化测试二十九:yaml配置文件的写和读的更多相关文章
- python接口自动化测试二十六:使用pymysql模块链接数据库
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018/5/28 18:51# @Author : StalloneYang# ...
- python接口自动化测试二十五:执行所有用例,并生成HTML测试报告
import requestsimport unittest class TestQQ(unittest.TestCase): '''测试QQ号接口''' # 此注释将展示到测 ...
- python接口自动化测试二十八:连接SQL sever操作
1.中文乱码问题: (1).文件头加上# -*- coding:utf-8 -*- 或者 #coding=utf8 (2).pymssql.connect连接串中charset是要跟你数据库的编码一样 ...
- python接口自动化测试二十四:上传多个附件,参数化
# 添加多个附件参数化files = [("1.png", "1.png") ("2.png", "2.png") ]d ...
- python接口自动化测试二十二:文件下载
文件下载类型: Content-Type: octets/stream 一般为文件类型:
- python接口自动化测试二十:函数写接口测试
# coding:utf-8import requestsimport refrom bs4 import BeautifulSoup # s = requests.session() # 全局的s ...
- python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为
python接口自动化测试二十七:密码MD5加密 ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...
- python接口自动化测试二:常用操作
url = '接口地址' r = requests.get(url) # 发送get请求 print(r.status_code) ...
- python接口自动化测试二十三:文件上传
# 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s ...
随机推荐
- mock.js的使用
安装 npm install mockjs 使用 const Mock = require("mockjs") //格式"属性名|min-max": " ...
- yolov2源码分析
分析过程首先我们从yolo的训练命令开始分析(yolo的源码是用c++写的): ./darknet detector train cfg/voc.data cfg/yolo-voc.cfg darkn ...
- linux下编译出现tmp空间不足解决办法
编译的时候出现问题: fatal error: error writing to /tmp/ccHqgMoi.s: No space left on device 原因 : 系统 /tmp/空间不足, ...
- json遍历 分别使用【原】
json遍历 一 使用org.json.JSONObject遍历 之后的所有遍历都参考了:http://blog.csdn.net/u010648555/article/details/4981538 ...
- CSS魔法(二)
# 文档类型<!DOCTYPE> <!DOCTYPE html> # 字符集 <meta charset="UTF-8" /> # 换行标签 & ...
- Github安全整理(转载)
刚好这两天对之前github上关注的一些比较有意思的项目进行了一下分类整理,在这里列出来分享给大家,希望能对大家寻找工具或者资源有所帮助. 大部分Repo是关于安全以及Python的,也有一些其他主题 ...
- 《深入理解java虚拟机》第六章 类文件结构
第六章 类文件结构 6.2 无关性的基石 各种不同平台的虚拟机与所有的平台都统一使用的程序存储格式--字节码(ByteCode)是构成平台无关性的基石.java虚拟机不和包括java在内的任何语言 ...
- mysql 查询优化 ~ 善用profie利器
一 简介:利用profile分析慢语句的过程有助于我们进行语句的优化 二 执行过程 set profiling=1; set profiling=0; 2 执行sql 3 查看过程消耗 三 ...
- 网络常用的linux系统调用
网络之常用的Linux系统调用 下面一些函数已经过时,被新的更好的函数所代替了(gcc在链接这些函数时会发出警告),但因为兼容的原因还保留着,这些函数将在前面标上“*”号以示区别. 一.进程控制 fo ...
- vim 超强发行版
推荐第一个: https://github.com/spf13/spf13-vim https://github.com/Spacevim/Spacevim https://github.com/JB ...