写点什么

软件测试 / 测试开发丨 Pytest 结合数据驱动 -yaml

作者:测试人
  • 2023-06-16
    北京
  • 本文字数:1071 字

    阅读完需:约 4 分钟

点此获取更多相关资料

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/24704

Pytest 结合数据驱动 YAML

数据驱动

  • 什么是数据驱动?数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。简单来说,就是参数化的应用。数据量小的测试用例可以使用代码的参数化来实现数据驱动,数据量大的情况下建议大家使用一种结构化的文件(例如 yaml,json 等)来对数据进行存储,然后在测试用例中读取这些数据。

  • 应用:App、Web、接口自动化测试测试步骤的数据驱动测试数据的数据驱动配置的数据驱动

yaml 文件介绍

  • 对象:键值对的集合,用冒号 “:” 表示

  • 数组:一组按次序排列的值,前加 “-”

  • 纯量:单个的、不可再分的值字符串布尔值整数浮点数 Null 时间日期

# 编程语言languages:  - PHP  - Java  - Pythonbook:  Python入门: # 书籍名称    price: 55.5    author: Lily    available: True    repertory: 20    date: 2018-02-17  Java入门:    price: 60    author: Lily    available: False    repertory: Null    date: 2018-05-11
复制代码

yaml 文件使用

  • 查看 yaml 文件 pycharmtxt 记事本

  • 读取 yaml 文件安装:pip install pyyaml 方法:yaml.safe_load(f)方法:yaml.safe_dump(f)

import yamlfile_path = './my.yaml'with open(file_path, 'r', encoding='utf-8') as f:    data = yaml.safe_load(f)
复制代码

工程目录结构

  • data 目录:存放 yaml 数据文件

  • func 目录:存放被测函数文件

  • testcase 目录:存放测试用例文件

# 工程目录结构.├── data│   └── data.yaml├── func│   ├── __init__.py│   └── operation.py└── testcase    ├── __init__.py    └── test_add.py
复制代码

测试准备

  • 被测对象:operation.py

  • 测试用例:test_add.py

  • 测试数据:data.yaml

# operation.py 文件内容def my_add(x, y):    result = x + y    return result# test_add.py 文件内容class TestWithYAML:  @pytest.mark.parametrize('x,y,expected', [[1, 1, 2]])  def test_add(self, x, y, expected):    assert my_add(int(x), int(y)) == int(expected)# data.yaml 文件内容
- - 1 - 1 - 2- - 3 - 6 - 9- - 100 - 200 - 300
复制代码



Pytest 数据驱动结合 yaml 文件

# 读取yaml文件def get_yaml():    """    获取json数据    :return: 返回数据的结构:[[1, 1, 2], [3, 6, 9], [100, 200, 300]]    """    with open('../datas/data.yaml', 'r') as f:        data = yaml.safe_load(f)        return data
复制代码




点此获取更多相关资料

发布于: 刚刚阅读数: 4
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Pytest结合数据驱动-yaml_程序员_测试人_InfoQ写作社区