pytest自动化测试数据驱动yaml/excel/csv/json

这篇文章主要为大家介绍了pytest自动化测试数据驱动yaml/excel/csv/json的示例详解,有需要的朋友可以借鉴参考下。−

数据驱动

数据的改变从而驱动自动化测试用例的执行,最终引起测试结果的改变。简单说就是参数化的应用。

测试驱动在自动化测试中的应用场景:

  • 测试步骤的数据驱动;

  • 测试数据的数据驱动;

  • 配置的数据驱动;

1、pytest结合数据驱动-yaml

实现读yaml文件,先创建env.yml文件配置测试数据

工程目录结构:

  • data目录:存放yaml文件
cpp 复制代码
-
  dev: 127.0.0.1
  #dev: 127.0.0.2
  #prod: 127.0.0.3
  • testcase目录:存放测试用例文件
cpp 复制代码
import pytest
import yaml
class TestYaml:
    @pytest.mark.parametrize("env", yaml.safe_load(open("./env.yml")))
    def test_yaml(self, env):
        if "test" in env:
            print("这是测试环境")
            # print(env)
            print("测试环境的ip是:", env["test"])
        elif "dev" in env:
            print("这是开发文件")
            print("开发环境的ip是:", env["dev"])
            # print(env)

结果示例:


2、pytest结合数据驱动-excel

常用的读取方式有:xlrd、xlwings、pandas、openpyxl

以读excel文件,实现A+B=C并断言为例~

工程目录结构:

data目录:存放excel数据文件

  • func目录:存放被测函数文件
cpp 复制代码
def my_add(x, y):
    result = x + y
    return result
  • testcase目录:存放测试用例文件
cpp 复制代码
import openpyxl
import pytest
from test_pytest.read_excel.func.operation import my_add
def test_get_excel():
    """
    解析excel数据
    :return: [[1,1,2],[3,6,9],[100,200,300]]
    """
    book = openpyxl.load_workbook('../data/param.xlsx')
    sheet = book.active
    cells = sheet["A1":"C3"]
    print(cells)
    values = []
    for row in sheet:
        data = []
        for cell in row:
            data.append(cell.value)
        values.append(data)
    print(values)
    return values
class TestWithExcel:
    @pytest.mark.parametrize('x,y,expected', test_get_excel())
    def test_add(self, x, y, expected):
        assert my_add(int(x), int(y)) == int(expected)

3、pyetst结合数据驱动-csv

csv:逗号文件,以逗号分隔的string文件

读取csv数据:

  • 内置函数open()

  • 内置模块csv

  • 方法:csv.reader(iterable)

  • 参数:iterable,文件或列表对象

  • 返回:迭代器,遍历迭代器,每次会返回一行数据

以读csv文件,实现A+B=C并断言为例~

工程目录结构:

data目录:存放csv数据文件

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

cpp 复制代码
def my_add(x, y):
    result = x + y
    return result

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

cpp 复制代码
import csv
import pytest
from test_pytest.read_csv.func.operation import my_add
def test_get_csv():
    """
    解析csv文件
    :return:
    """
    with open('../data/params.csv') as file:
        raw = csv.reader(file)
        data = []
        for line in raw:
            data.append(line)
    print(data)
    return data
class TestWithCsv:
    @pytest.mark.parametrize('x,y,expected', test_get_csv())
    def test_add(self, x, y, expected):
        assert my_add(int(x), int(y)) == int(expected)

4、pytest结合数据驱动-json

json:js对象,是一种轻量级的数据交换格式。

json结构:

对象{"key":value}

数组[value1,value2...]

查看json文件:

1.pycharm

2.txt记事本

读取json文件:

内置函数open()

内置库json

方法 json.loads() json.dumps()

以读json文件,实现A+B=C并断言为例~

工程目录结构:

data目录:存放json数据文件

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

cpp 复制代码
def my_add(x, y):
    result = x + y
    return result

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

cpp 复制代码
import json
import pytest
from test_pytest.read_json.func.operation import my_add
def test_get_json():
    """
    解析json数据
    :return: [[1,1,2],[3,6,9],[100,200,300]]
    """
    with open('../data/params.json', 'r') as file:
        data = json.loads(file.read())
        print(list(data.values()))
        return list(data.values())
class TestWithJson:
    @pytest.mark.parametrize('x,y,expected', test_get_json())
    def test_add(self, x, y, expected):
        assert my_add(int(x), int(y)) == int(expected)

以上就是pytest自动化测试数据驱动yaml/excel/csv/json的详细内容


最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!

以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

相关推荐
Mr.D学长9 分钟前
毕业设计 深度学习社交距离检测系统(源码+论文)
python·毕业设计·毕设
wdxylb13 分钟前
解决Python使用Selenium 时遇到网页 <body> 划不动的问题
python
代码骑士20 分钟前
【一起学NLP】Chapter3-使用神经网络解决问题
python·神经网络·自然语言处理
wxin_VXbishe1 小时前
springboot合肥师范学院实习实训管理系统-计算机毕业设计源码31290
java·spring boot·python·spring·servlet·django·php
ITenderL1 小时前
Python学习笔记-函数
python·学习笔记
zmjia1111 小时前
全流程Python编程、机器学习与深度学习实践技术应用
python·深度学习·机器学习
_.Switch2 小时前
Python机器学习:自然语言处理、计算机视觉与强化学习
python·机器学习·计算机视觉·自然语言处理·架构·tensorflow·scikit-learn
JUNAI_Strive_ving2 小时前
番茄小说逆向爬取
javascript·python
彤银浦2 小时前
python学习记录7
python·学习
简单.is.good3 小时前
【测试】接口测试与接口自动化
开发语言·python