微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【pytest】YAML管理测试数据

  • 前言:

    • 代码的可维护性除了代码冗余之外还有就是数据尽量不要和代码掺杂在一起,因为阅读起来会非常的凌乱;数据分离能更好的增加代码可读性和可维护性,也能更好的二次修改使用。
    • 上一篇小编与大家分享了pytest参数化,文章中,数据与代码放在一个py文件中,如果要修改数据就比较麻烦了,本篇我们将使用YAML文件来管理数据。
  • yaml基本语法规则

    • 大小写敏感
    • 使用缩进表示层级关系
    • 缩进时不允许使用Tab键,只允许使用空格。
    • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
    • #表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样
#yaml中序列(list)
- admin
- admin2
- admin3

#yaml中键值对(字典)
#1、直接使用花括号
{"message": "update some data!", "code": 0}
#2、键值对
user: admin
pwd: 123456
  • 操作步骤
    • 1、环境安装
      • pip install PyYAML== 3.12
    • 2、新建yaml文件,保存数据
# data\userinfo.yaml
-
    - "M"
    - "message": "update some data!", "code": 0
-
    - "F"
    - "message": "update some data!", "code": 0
#common\read_yaml.py
import yaml
import os

def readyml(yaml_path):
    #判断yaml文件是否存在
    if not os.path.isfile(yaml_path):
        raise FileNotFoundError('文件路径不存在,请检查路径是否正确:%s'%yaml_path)
    #读取文件
    with open(yaml_path,encoding='utf8') as f:
        yaml_data = f.read()
        data = yaml.safe_load(yaml_data)   #转换成列表、字典对象
    return data
  • 4、用例中使用
#case\test_param.py
import pytest
import os
from common.read_yaml import readyml

#获取文件绝对路径
cur_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
yaml_path = os.path.join(cur_path,'data','userinfo.yaml')
print(yaml_path)

test_data = readyml(yaml_path)

@pytest.mark.parametrize("test_input,expect", test_data)
def test_001(test_input,expect):
    print(test_input,expect['message'])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐