• 自动化测试框架Pytest(四) ——数据驱动


    我们搭建一个自动化框架需要包括以下几个方面:

    数据驱动

    关键字驱动

    全局配置文件的封装

    日志监控

    selenium、requests二次封装

    断言

    报告邮件

    更多。。。

    今天这章来谈谈数据驱动。

    所谓数据驱动,可以简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。

    pytest的数据驱动有两种方式。一是parametrize驱动,二是yaml驱动。今天我们来分别试试两种驱动的优缺点。

    一、parametrize数据驱动

    用到装饰器,args_name代表变量名,args_value代表需要测试的数据。

    可以是单个变量也可以是多个变量。

    1. @pytest.mark.parametrize(args_name,args_value)
      args_name:参数名称
      args_value:参数值

    例子:

    import pytest
    class Test05:
        @pytest.mark.parametrize("args_name", ['百里','婉儿','露露'])    def test_get_token(self,args_name):        print('测试参数'+args_name)

    如果参数是多层嵌套:

    import pytest
    class Test05:
        @pytest.mark.parametrize("name,age", [['百里','11'],['婉儿','22'],['露露','33']])    def test_get_token(self,name,age):        print(f'姓名:{name},age:{age}')

    二、yaml文件

    一种数据格式,一般用于配置文件以及接口自动化的用例

    由两种数据格式组成:
    1.map对象:键:(空格)值。
    name: 百里
    2.list列表:用一组-开头。同一个级别的-是同一个list
    - name1: 百里
    - name2: 婉儿

    1、安装pyyaml模块

    pip install pyyaml

    2、在用例同目录新建yaml文件test_05.yaml

    -  name: 获取token接口1  request:    method: get    data:      name: 百里      age: 18    url: https://www.baidu.com  validate: None-  name: 获取token接口2  request:    method: get    data:      name: 婉儿      age: 17    url: https://www.baidu.com  validate: None

    3、添加读取yaml的工具类yaml_util.py

    import yaml
    def read_yaml(yaml_path):    with open(yaml_path,encoding='utf‐8') as f:        value = yaml.load(f,Loader=yaml.FullLoader)        return value

    4、用例读取数据​​​​​​​

    import pytest
    from commons.yaml_util import read_yaml
    class Test05:
        @pytest.mark.parametrize("args", read_yaml("./testcase/test_05.yaml"))    def test_get_token(self,args):        print(args)        print(args['request']['data']['name'])

    通过以上两种方式我们就可以将测试代码和测试数据区分开了!


    学习资源分享

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

    这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

    如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我的qq群大家一起讨论交流,里面也有各种软件测试资料和技术交流。

  • 相关阅读:
    JAVA毕业设计供求信息网计算机源码+lw文档+系统+调试部署+数据库
    Chapter8.3:非线性控制系统分析
    iptables详解——基于Arch Linux官方文档
    企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)
    从零开始编写一个 Python 异步 ASGI WEB 框架
    获取最新时次空气质量国控站数据的接口
    【ELK05】es的java-api操作-Java High Level REST Client常用功能
    剑指offer 23. 反转链表
    java计算机毕业设计ssm养老管理系统-敬老院系统
    红米Note12Turbo解锁BL刷入PixelExperience原生ROM系统详细教程
  • 原文地址:https://blog.csdn.net/m0_58026506/article/details/126274826