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


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

    数据驱动

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

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

    • 测试步骤的数据驱动;

    • 测试数据的数据驱动;

    • 配置的数据驱动;

    1、pytest结合数据驱动-yaml

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

    工程目录结构:

    • data目录:存放yaml文件
    -
      dev: 127.0.0.1
      #dev: 127.0.0.2
      #prod: 127.0.0.3
    
    • 1
    • 2
    • 3
    • 4
    • testcase目录:存放测试用例文件
    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    结果示例:


    2、pytest结合数据驱动-excel

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

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

    工程目录结构:
    data目录:存放excel数据文件

    • func目录:存放被测函数文件
    def my_add(x, y):
        result = x + y
        return result
    
    • 1
    • 2
    • 3
    • testcase目录:存放测试用例文件
    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    3、pyetst结合数据驱动-csv

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

    读取csv数据:

    • 内置函数open()

    • 内置模块csv

    • 方法:csv.reader(iterable)

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

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

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

    工程目录结构:
    data目录:存放csv数据文件


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

    def my_add(x, y):
        result = x + y
        return result
    
    • 1
    • 2
    • 3

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

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    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目录:存放被测函数文件

    def my_add(x, y):
        result = x + y
        return result
    
    • 1
    • 2
    • 3

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

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

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


    最后

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

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

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


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

    ​​

    ​​​​

  • 相关阅读:
    OpenDataV低代码平台新增组件流程
    宏观经济学名词解释
    SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.17 发送多部件邮件
    Springboot JSON 转换:Jackson篇
    PMP每日一练 | 考试不迷路-11.11(包含敏捷+多选)
    如何阅读芯片手册
    【数据测试】之前段端(二)
    vue事件处理&&表单输入绑定
    Vita-CLIP: Video and text adaptive CLIP via Multimodal Prompting
    电影:从微缩模型到AI纹理
  • 原文地址:https://blog.csdn.net/qq_56271699/article/details/133961671