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

     

     
    分类: python基础
     
     
     
    来源:
    测试-安静    https://www.cnblogs.com/qican/
     
     
     
     
     
  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/rxxbb123/p/14234073.html
Copyright © 2011-2022 走看看