zoukankan      html  css  js  c++  java
  • python配置yaml

      我们在做自动化的过程中无论是接口自动化还是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(r'E:appInterface
    ame.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(r'E:appInterface
    ame.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
    我会的技能是接口测试和功能测试

     

  • 相关阅读:
    atitit.ntfs ext 文件系统新特性对比
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx
  • 原文地址:https://www.cnblogs.com/qican/p/11773967.html
Copyright © 2011-2022 走看看