首页 > 编程语言 > 详细

python配置yaml

时间:2019-11-02 14:37:01      阅读:91      评论:0      收藏:0      [点我收藏+]

  我们在做自动化的过程中无论是接口自动化还是UI自动化都会存在很多数据,我们对于自动化中如何存放这些数据也是很重要一点,如果写在代码里的话,每次更换数据就有点繁琐,我们可以通过一个文件存放这些数据,然后再我们需要这些数据的时候直接进行调用,对于这些数据的管理有很多种如:excel,yaml,ini,conf,今天先介绍一种yaml。

yaml

yaml(yaml不是标记语言)是一种人类可读的数据序列化语言。它通常用于配置文件,但也用于数据存储(例如调试输出)或传输(例如文档标题)。

yaml支持的类型:标量(例如字符串,整数和浮点数),列表和关联数组。

yaml的基本语法

1、大小写敏感;

2、使用缩进表示层级关系,只可以使用空格;

3、列表中项通过“-”表示,字典中的通过“:”表示

4、# 表示注释,和python表示注释一样

yaml的优点:

1、yaml的可读性好;

2、yaml和脚本语言的交互性好;

3、yaml使用实现语言的数据类型;

4、yaml有一个一致的信息模型;

5、yaml易于实现;

6、yaml可以基于流来处理;

7、yaml表达能力强,扩展性好;

安装

pip install pyyaml

技术分享图片

yaml创建

这里安静使用的是pycharm,创建一个file,前面文件名称随便,后面文件后缀.yaml

技术分享图片技术分享图片

编写yaml

我们可以通过这个yaml可以很清楚的读出来,名字叫做安静,年龄18岁,职业是软件测试工程师,年薪为3K,会的技能有接口测试这个值1K,会的功能测试值2K

# 简介
name: AnJing
age: 18
profession:
name: 软件测试工程师
annual: 3K
skill:
- name1: 接口测试
pay: 1K

- name2: 功能测试
pay: 2K

读取yaml

# coding:utf-8
import yaml
# 直接打开读出来
f = open(rE:\app\Interface\name.yaml,r,encoding=utf-8)
result = f.read()
print(result)
# 转换成字典读出来
a = yaml.load(result)
print(a)

技术分享图片

这个时候发现我们的数据是成功的读出来了,但是肯定会卧槽,为啥报错了?哪里出了问题?

禁止警告

我们可以看到这个地方是禁止使用yaml.load(),因为python认为load是不安全的,发出了安全警告,那么我们如何取消警告呢?

yaml.load(result, Loader=yaml.FullLoader)

技术分享图片

 yaml的其他写法

#1、数值直接以字面量的形式表示
number: 12.30

#2、布尔值用true和false表示
isSet: true
isSet1: false

# 3、null用~表示
parent: ~

#4、时间采用 ISO8601 格式。
time1: 2019-11-1 21:59:43.10-05:00

##5、日期采用复合 iso8601 格式的年、月、日表示。
date: 2019-11-1

#6、YAML 允许使用两个感叹号,强制转换数据类型。
int_to_str: !!str 123
bool_to_str: !!str true

技术分享图片

 

读取yaml具体数值

首先创建一个yaml文件,把测试数据写好,通过字典的形式读取出来,在根据字典的格式进行提取

# 简介
name: AnJing
age: 18
profession:
      name: 软件测试工程师
      pay: 2K
skill:
      - name1: 接口测试
        pay: 1K

      - name2: 功能测试
        pay: 2K

根据上述方法,通过字典的方式找到需要的值,然后再取出来

# coding:utf-8
import yaml
# 直接打开读出来
f = open(rE:\app\Interface\name.yaml,r,encoding=utf-8)
result = f.read()
# 转换成字典读出来
a = yaml.load(result,Loader=yaml.FullLoader)
print(a)
print(我的名字是:%s%a[name])
print(我做的职位是:%s%a[profession][name])
print(我今年%s岁%a[age])
print(我的年薪是%s%a[profession][pay])
print(我会的技能是{}和{}.format(a[skill][0][name1],a[skill][1][name2]))



-------------------------------------------------------------------------
{name: AnJing, age: 18, profession: {name: 软件测试工程师, pay: 2K}, skill: [{name1: 接口测试, pay: 1K}, {name2: 功能测试, pay: 2K}]}
我的名字是:AnJing
我做的职位是:软件测试工程师
我今年18岁
我的年薪是2K
我会的技能是接口测试和功能测试

 

 

 

 

python配置yaml

原文:https://www.cnblogs.com/qican/p/11773967.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!