ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【pytest】YAML管理测试数据

2022-08-06 22:30:42  阅读:182  来源: 互联网

标签:yaml os 测试数据 YAML pytest import test path data


  • 前言:

    • 代码的可维护性除了代码冗余之外还有就是数据尽量不要和代码掺杂在一起,因为阅读起来会非常的凌乱;数据分离能更好的增加代码可读性和可维护性,也能更好的二次修改使用。
    • 上一篇小编与大家分享了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
  • 3、封装函数,读取yaml文件
#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'])

标签:yaml,os,测试数据,YAML,pytest,import,test,path,data
来源: https://www.cnblogs.com/xwltest/p/16558066.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有