我们在做自动化的过程中无论是接口自动化还是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表达能力强,扩展性好;

安装

  1. pip install pyyaml

yaml创建

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

编写yaml

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

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

读取yaml

  1. # coding:utf-8
  2. import yaml
  3. # 直接打开读出来
  4. f = open(r'E:\app\Interface\name.yaml','r',encoding='utf-8')
  5. result = f.read()
  6. print(result)
  7. # 转换成字典读出来
  8. a = yaml.load(result)
  9. print(a)

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

禁止警告

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

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

yaml的其他写法

  1. #1、数值直接以字面量的形式表示
  2. number: 12.30
  3.  
  4. #2、布尔值用true和false表示
  5. isSet: true
  6. isSet1: false
  7.  
  8. # 3、null用~表示
  9. parent: ~
  10.  
  11. #4、时间采用 ISO8601 格式。
  12. time1: 2019-11-1 21:59:43.10-05:00
  13.  
  14. ##5、日期采用复合 iso8601 格式的年、月、日表示。
  15. date: 2019-11-1
  16.  
  17. #6、YAML 允许使用两个感叹号,强制转换数据类型。
  18. int_to_str: !!str 123
  19. bool_to_str: !!str true

读取yaml具体数值

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

  1. # 简介
  2. name: AnJing
  3. age: 18
  4. profession:
  5. name: 软件测试工程师
  6. pay: 2K
  7. skill:
  8. - name1: 接口测试
  9. pay: 1K
  10.  
  11. - name2: 功能测试
  12. pay: 2K

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

  1. # coding:utf-8
  2. import yaml
  3. # 直接打开读出来
  4. f = open(r'E:\app\Interface\name.yaml','r',encoding='utf-8')
  5. result = f.read()
  6. # 转换成字典读出来
  7. a = yaml.load(result,Loader=yaml.FullLoader)
  8. print(a)
  9. print('我的名字是:%s'%a['name'])
  10. print('我做的职位是:%s'%a['profession']['name'])
  11. print('我今年%s岁'%a['age'])
  12. print('我的年薪是%s'%a['profession']['pay'])
  13. print('我会的技能是{}和{}'.format(a['skill'][0]['name1'],a['skill'][1]['name2']))
  14.  
  15. -------------------------------------------------------------------------
  16. {'name': 'AnJing', 'age': 18, 'profession': {'name': '软件测试工程师', 'pay': '2K'}, 'skill': [{'name1': '接口测试', 'pay': '1K'}, {'name2': '功能测试', 'pay': '2K'}]}
  17. 我的名字是:AnJing
  18. 我做的职位是:软件测试工程师
  19. 我今年18
  20. 我的年薪是2K
  21. 我会的技能是接口测试和功能测试

 

python配置yaml的更多相关文章

  1. Appium+python自动化(三十)- 实现代码与数据分离 - 数据配置-yaml(超详解)

    简介 本篇文章主要介绍了python中yaml配置文件模块的使用让其完成数据和代码的分离,宏哥觉得挺不错的,于是就义无反顾地分享给大家,也给大家做个参考.一起跟随宏哥过来看看吧. 思考问题 前面我们配 ...

  2. python读取yaml配置文件

    支持多种语言:python.js.golang.java.c.c++ YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写.它实质上是一种通用的数据串行化格式. 它的基本语法规则如下 ...

  3. Python 配置日志的几种方式

    Python配置日志的几种方式 作为开发者,我们可以通过以下3种方式来配置logging: (1)使用Python代码显式的创建loggers,handlers和formatters并分别调用它们的配 ...

  4. python读取yaml文件,在unittest中使用

    python读取yaml文件使用,有两种方式: 1.使用ddt读取 2,使用方法读取ddt的内容,在使用方法中进行调用 1.使用ddt读取 @ddt.ddt class loginTestPage(u ...

  5. SpringBoot-属性配置yaml自定义属性和值

    SpringBoot-属性配置yaml自定义属性和值 SpringBoot-属性配置yaml自定义属性和值 在SpringBoot中yml/yaml文件可以自定义一些属性,以供注入给自定义bean对象 ...

  6. Anaconda多环境多版本python配置指导

    Anaconda多环境多版本python配置指导 字数3696 阅读644 评论0 喜欢0 最近学python,读完了语法后在GitHub找了一些练习来做,由 于学的是python3.x语法,而Git ...

  7. Python读取Yaml文件

    近期看到好多使用Yaml文件做为配置文件或者数据文件的工程,随即也研究了下,发现Yaml有几个优点:可读性好.和脚本语言的交互性好(确实非常好).使用实现语言的数据类型.有一个一致的数据模型.易于实现 ...

  8. 使用python读取yaml文件

    在做APP测试时,通常需要把参数存到一个字典变量中,这时可以将参数写入yaml文件中,再读取出来. 新建yaml文件(android_caps.yaml),文件内容为: platformName: A ...

  9. python操作YAML文件之pyyaml库

    1. YAML简介 YAML是一种被认为可以超越XML.JSON的配置文件,最早接触是Spring Boot,木有想到python也是支持的,遂研究一下. python解析YAML库叫做pyyaml, ...

随机推荐

  1. <离散数学>代数系统——群,半群

    ------运算的定义及性质 设S是一个非空集合,映射f:Sn->S称为S上的一个n元运算.假设“•”是定义在集合S上的一个二元运算.若: ∀x,y∈S,x•y∈S,则称“•”在S上是封闭的. ...

  2. 计算几何 val.2

    目录 计算几何 val.2 几何单位结构体板子 旋转卡壳 基础概念 求法 模板 半平面交 前置芝士:线段交 S&I算法 模板 最小圆覆盖 随机增量法 时间复杂度 模板 后记 计算几何 val. ...

  3. IDEA去除掉虚线,波浪线,和下划线实线的方法

    初次安装使用IDEA,总是能看到导入代码后,出现很多的波浪线,下划线和虚线,这是IDEA给我们的一些提示和警告,但是有时候我们并不需要,反而会让人看着很不爽,这里简单记录一下自己的调整方法,供其他的小 ...

  4. 2.Ansible Playbook剧本

    1.playbook?playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色 task: 定义的是具体执行的任务 playbook: 由一 ...

  5. Complete_NGINX_Cookbook

    Complete NGINX Cookbook 下载地址:Complete NGINX Cookbook

  6. openstack在controller节点使用openstack network agent list不显示计算节点

    问题描述: 做完计算节点neutron的相关配置后,在controller节点查看agent列表,结果如下 发现并没有compute节点 在计算节点上查看status显示failed 在查看日志文件/ ...

  7. Hibernate session.save()实体类,主键增长问题

    实体类如下: package com.wondersgroup.test.entity;   import java.io.Serializable;   import javax.persisten ...

  8. JSON对象转JAVA对象--com.alibaba.fastjson.JSONObject

    打印结果:

  9. [考试反思]1113csp-s模拟测试114:一梦

    自闭.不废话.写一下低错. T1:觉得信心赛T1不会很恶心一遍过样例直接没对拍(其实是想写完T2之后回来对拍的) 状态也不好,基本全机房都开始码了我还没想出来(skyh已经开T2了).想了40多分钟. ...

  10. IT兄弟连 HTML5教程 HTML5表单 新增的表单属性1

    HTML5 Input表单为<form>和<input>标签添加了几个新属性,属性如表1. 1  autocomplete属性 autocomplete属性规定form或inp ...