• 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
    我会的技能是接口测试和功能测试

     

  • 相关阅读:
    SpringCloud微服务初步认识
    SpringCloud-Hystrix:服务熔断与降级
    List接口下重要集合源码分析
    高频面试题:手写一个LRU
    Java基础面试题面经整理(持续更新)
    Redis高可用之主从复制
    Redis过期键删除和内存淘汰
    Redis持久化(RDB与AOF)
    了解Redis事务
    Redis入门与安装
  • 原文地址:https://www.cnblogs.com/qican/p/11773967.html
Copyright © 2020-2023  润新知