zoukankan      html  css  js  c++  java
  • python+Appium自动化:读取Yaml配置文件

    Yaml简介

    Yaml:"Yet Another Markup Language"(是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

    appium中,yaml 是专门用来写配置文件的语言,语言很简洁、强大,格式有点类似于json,感觉要比json强大点。

    语法特点:

    1.大小写敏感;

    2.使用缩进表示层级关系;

    3.缩进时不允许使用Tab键,只允许使用空格;

    4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。

    yaml下载

    https://pyyaml.org/

    也可以在cmd中下载

    pip install pyyaml

    Yaml数据类型

    yaml支持的数据结构有三种:

    1.对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

    2.数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

    3.纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期

    创建一个例子:

    egyaml.yaml

    name: Tom
    age: 28
    spouse:
      name: May
      age: 26
    children:
      - name: kate
        age: 5
      - name: jeck
        age: 3

    数据读取:

    yamlload.py

    import yaml
    
    file = open('egyaml',encoding="utf-8")
    data=yaml.load(file,yaml.FullLoader)
    print(data)
    #输出tom的名字、年龄
    print(data['name'])
    print(data['age'])
    
    #输出妻子的名字、年龄
    print(data['spouse'])
    print(data['spouse']['name'])
    print(data['spouse']['age'])
    
    #输出孩子们的名字、年龄
    print(data['children'])
    print(data['children'][0]['name'])
    print(data['children'][0]['age'])
    
    print(data['children'][1]['name'])
    print(data['children'][1]['age'])

    输出结果:

    {'age': 28, 'name': 'Tom', 'children': [{'name': 'kate', 'age': 5}, {'name': 'jeck', 'age': 3}], 'spouse': {'name': 'May', 'age': 26}}
    Tom
    28
    {'name': 'May', 'age': 26}
    May
    26
    [{'name': 'kate', 'age': 5}, {'name': 'jeck', 'age': 3}]
    kate
    5
    jeck
    3

    补充:

    file = open('egyaml',encoding="utf-8")
    data=yaml.load(file)

    运行后总出现

    YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
    data=yaml.load(file)

    尽管是没有什么影响,但是看着别扭,YAML 5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader

    data=yaml.load(file,yaml.FullLoader)这样就正常了

    数据转化为yaml格式,用yaml.dump()

    # -*- coding: utf-8 -*-#
    import yaml
    a1=[1,321.33,1,'hello',[1,2,3,'python'],]
    a2={'123A':'class','No1':1,"money":13254.55,"tuple":(123),'teacher':[123,46546.225,'python']}
    print(type(a1))
    print(type(a2))
    print(a1)
    print(a2)
    #转化为yaml类型
    print(yaml.dump(a1))
    print(yaml.dump(a2))

    执行结果:

    <class 'list'>
    <class 'dict'>
    [1, 321.33, 1, 'hello', [1, 2, 3, 'python']]
    {'money': 13254.55, 'tuple': 123, 'No1': 1, '123A': 'class', 'teacher': [123, 46546.225, 'python']}
    - 1
    - 321.33
    - 1
    - hello
    - - 1
      - 2
      - 3
      - python
    
    123A: class
    No1: 1
    money: 13254.55
    teacher:
    - 123
    - 46546.225
    - python
    tuple: 123
    转载请附上原文链接。
  • 相关阅读:
    Annotation
    jdbc
    集合
    与运行环境交互
    计数排序and基数排序
    面向对象下
    面向对象
    流程控制与数组
    庆祝自己的BLOG开张
    Raspberry Pi配置为无线路由器
  • 原文地址:https://www.cnblogs.com/bugbreak/p/12074190.html
Copyright © 2011-2022 走看看