软件测试学习笔记丨pytest结合数据驱动-yaml

55 阅读2分钟

本文转自测试人社区,原文链接:ceshiren.com/t/topic/300…

数据驱动

  • 什么是数据驱动?
    数据驱动就是数据的改变从而驱动自动化测试用例的执行,最终引起测试结果的改变。简单来说,就是参数化的应用。数据量小的测试用例可以使用代码的参数化来实现数据驱动,数据量大的情况下可以使用结构化文件yaml或者json等,来对数据进行存储,然后在测试用例中读取这些数据。
  • 应用:
    App、Web、接口自动化测试
    测试步骤的数据驱动
    测试数据的数据驱动
    配置的数据驱动
  • yaml文件介绍
    对象:键值对的集合,用冒号":“表示
    数组:一组按次序排列的值,前加”-"
    纯量:单个的、不可再分的值
    字符串
    布尔值
    整数
    浮点数
    Null
    时间
    日期
#编程语言
languages:
    - PHP
    - Java
    - Python
book:
    Python入门:# 书籍名称
        price: 55.5
        author: Lily
        available: True
        repertory: 20
        date: 2018-2-17
    Java入门:
        price:60
        author:Lily
        available:False
        repertory: Null
        date: 2018-5-11
  • yaml文件使用
  • 查看yaml文件

pycharm
txt记事本

  • 读取yaml文件
    安装:pip install pyyaml
    方法:yaml.safe_load(f):将yaml文件加载成python对象
    方法:yaml.safe_dump(f):将python对象解析成yaml格式的文件,并保存
import yaml
file_path = './my.yaml'
with open(file_path, 'r', encoding='utf-8') as f:
    data = yaml.safe_load(f)
  • yaml文件所在的工程目录结构
    data目录:存放yaml数据文件
    func目录:存放被测函数文件
    testcase目录:存放测试用例文件

  • 测试准备
    测试数据:data.yaml
    被测对象:operation.py
    测试用例:test_add.py
# data.yaml 文件内容
- 
  - 1
  - 1
  - 2
- 
  - 3
  - 6
  - 9
- 
  - 100
  - 200
  - 300

# operation.py 文件内容
def my_add(x,y):
    result = x + y
    return result

# test_add.py 文件内容
import pytest
import yaml
from func.operation import my_add
   # 用到yaml文件中的数据时,就需要读取出来
def get_yaml():
    """
    获取json数据
    :return: 返回数据结构:[[1,2,3],[3,6,9],[100,200,300]]
    """
    #如果yaml文件中有中文,需加上encoding="utf-8
    with open('../data/data.yaml','r','encoding="utf-8') as f:
        data = yaml.safe_load(f)  #将yaml文件加载成python对象:[[],[],[]]
        return data

class TestWithYAML:
    @pytest.mark.parametrize('x,y,expected',[[1,1,2]])
    def test_add(self,x,y,excepted):
        assert my_add(int(x),int(y)) == int(expected)

微信图片_20240219162630.jpg