• yaml文件存放测试用例


    yaml文件存放测试用例

    一、YAML简介

    YAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。

    YAML是 "YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。

    这么命名的方式,表示 YAML 强调的不是标记,而是数据本身。

    二、基本语法

    • 1.大小写敏感
    • 2.使用缩进表示层级关系
    • 3.不允许使用 TAB 键来缩进,只允许使用空格键来缩进
    • 4.缩进的空格数量不重要
    • 5.使用"#"来表示注释

    三、支持的数据格式

    • 1.对象:键值对的集合,又称映射 (mapping) / 哈希(hashes)/ 字典 (dictionary)
    • 2.数组: 一组按次序排列的值,又称序列 (sequence) / 列表 (list)
    • 3.纯量 (scalars) :单个的,不可再分的值,
      • 常见的纯量: 字符串、布尔值、整数、浮点数、null、时间、日期

    四、数据格式简单示例

    1、对象数据格式

    yaml格式:
    name: xiaoming
    
    读取出来的格式:
    {'name':'xiaoming'}
    

    2、数组数据格式(在前面添加 ‘-’ 读出来就是数组格式)

    yaml格式:
    - list1
    - list2
    - list3
    
    读取出来的格式:
    ['list1', 'list2', 'list3']
    

    3、纯量数据格式

    yaml格式:
    number: 18.5
    string: hello
    bool: true
    nothing: ~
    date: 2020-04-21
    time: 2020-04-21 13:14:21
    
    读取出来的格式:
    {
    	'number': 18.5,
    	'string': 'hello',
    	'bool': True,
    	'nothing': None,
    	'date': datetime.date(2020, 4, 21),
    	'time': datetime.datetime(2020, 4, 21, 13, 14, 21)
    }
    

    五、YAML使用

    1、安装yaml库

    pip install pyyaml
    

    2、导入yaml库

    import yaml
    

    3、读取数据

    with open(file="conf.yaml", encoding='utf8') as f:
        data = yaml.load(f, yaml.FullLoader)
    

    【注】: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(f)

    为了去除这个警告,我们可以在yaml.load( )加一个参数 yaml.FullLoader 即可

    4、写入数据(mode参数:w,覆盖写入, a,追加写入)

    new_data = {'name': 'Tom'}
    with open(file="conf.yaml", mode='w', encoding="utf-8") as f:
        yaml.dump(new_data, f)
    

    六、YAML文件存放测试用例数据

    yaml测试用例示例

    register:
      - case_id: 1
        title: 注册用例1
        method: POST
        url: /register
        data:
          account: '123456789'
          pwd: '12345678'
        expect:
          code: 0
          msg: OK
      - case_id: 2
        title: 注册用例2
        method: POST
        url: /register
        data:
          account: '123456788'
          pwd: '12345678'
          type: 1
        expect:
          code: 0
          msg: OK
    login:
      - case_id: 1
        title: 登陆用例1
        method: POST
        url: /login
        data:
          account: '123456789'
          pwd: '12345678'
        expect:
          code: 0
          msg: OK
      - case_id: 2
        title: 登陆用例2
        method: POST
        url: /login
        data:
          account: '123456788'
          pwd: '12345678'
        expect:
          code: 0
          msg: OK
    

    读取出的数据(清晰明了)

    {
    'register': [
        {'case_id': 1, 'title': '注册用例1', 'method': 'POST', 'url': '/register', 'data': {'account': '123456789', 'pwd': '12345678'}, 'expect': {'code': 0, 'msg': 'OK'}}, 
        {'case_id': 2, 'title': '注册用例2', 'method': 'POST', 'url': '/register', 'data': {'account': '123456788', 'pwd': '12345678', 'type': 1}, 'expect': {'code': 0, 'msg': 'OK'}}
        ], 
    'login': [
        {'case_id': 1, 'title': '登陆用例1', 'method': 'POST', 'url': '/login', 'data': {'account': '123456789', 'pwd': '12345678'}, 'expect': {'code': 0, 'msg': 'OK'}},
        {'case_id': 2, 'title': '登陆用例2', 'method': 'POST', 'url': '/login', 'data': {'account': '123456788', 'pwd': '12345678'}, 'expect': {'code': 0, 'msg': 'OK'}}
        ]
    }
    

    七、对读取YAML文件进行封装

    class YamlHandle(object):
    
        def __init__(self, conf_file):
            self.conf_file = conf_file
    
        def load(self) -> dict:
            """
            读取yaml文件,获取全部数据
            :return: dict
            """
            with open(file=self.conf_file, encoding='utf8') as f:
                data = yaml.load(f, yaml.FullLoader)
            return data
    
        def get_data(self, node) -> list:
            """
            获取节点数据
            :param node: 节点名称
            :return: dict&str
            """
            return self.load()[node]
    

    yaml 文件通过 pyyaml 库转换后就是 Python 中对应的数据类型。直接进行操作即可,相较从 excel 中读取数据全部是字符串的方式来说,处理更方便。相对于 json 格式,可读性更高。

  • 相关阅读:
    mysql索引数据结构
    29. 使用参数化编写自动化测试用例
    28. Python编写自动化测试用例
    27. Unittest单元测试框架的介绍与使用
    26. 什么是单元测试
    25. Postman的使用
    24. 接口测试的意义
    23. requests安装与使用
    22. 如何编写接口文档
    21. Blog接口开发
  • 原文地址:https://www.cnblogs.com/desireyang/p/12745016.html
Copyright © 2020-2023  润新知