• Python 自动化测试(四):数据驱动


    本周测试公开课《Pytest 自动化测试最佳实践:实用特性与进阶技巧》,文末加群!

    在实际的测试工作中,通常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件质量。这种测试,在功能测试中非常耗费人力物力,但是在自动化中,却比较好实现,只要实现了测试操作步骤,然后将多组测试数据以数据驱动的形式注入,就可以实现了。


    前面文章学习了参数化
    ,当数据量非常大的时候,我们可以将数据存放到外部文件中,使用的时候将文件中的数据读取出来,方便测试数据的管理。数据与测试用例分别管理,可以利用外部数据源
    YAML、JSON、Excel、CSV 管理测试数据。

    pytest 结合 YAML

    YAML 是一种容易阅读、适合表示程序语言的数据结构、可用于不同程序间交换数据、丰富的表达能力和可扩展性、易于使用的语言。通过缩进或符号来表示数据类型。

    pyyaml 模块在 Python 中用于处理 YAML 格式数据,主要使用 yaml.safe_dump()yaml.safe_load()
    函数将 Python 值和 YAML 格式数据相互转换。工作中常常使用 YAML 格式的文件存储测试数据。

    安装

    pip install PyYAML  
    

    案例

    创建用例文件以及数据文件来完成数据驱动的测试案例,创建一个文件夹 testdata,在这个文件夹下创建 data.yml
    test_yaml.py 文件。

    创建 data.yml 文件:

    -  
      - 1  
      - 2  
    -  
      - 20  
      - 30  
    

    创建“test_yaml.py”,代码如下:

    import pytest  
    import yaml  
      
    @pytest.mark.parametrize("a,b", yaml.safe_load(open("datas.yml",\  
    encoding='utf-8')))  
    def test_foo(a,b):  
        print(f"a + b = {a + b}")  
    

    代码分析

    yaml 文件里定义了列表数据,通过 open() 方法获取 data.yml 文件对象,使用 yaml.safe_load()
    加载这个文件对象,将 YAML 格式文件转换为 Python 值,分别传到到用例中生成多条用例分别执行。

    运行结果

    省略...  
    test_params.py::test_foo[1-2]   
    test_params.py::test_foo[20-30]   
    省略...  
    

    运行结果中 [1-2][20-30] 代码传入的两组参数,分别传入 test_foo() 用例方法中执行,并且分别生成两条测试结果。

    以上,pytest 组合 YAML 实现数据驱动,YAML 文件作为用例数据源,控制测试用例的执行,使测试用例数据维护更加方便快捷。

    【相关阅读】


    **活动推荐
    **

    本周四晚 8 点,霍格沃兹测试学院邀请到资深测试技术专家 方程老师分享 《Pytest 自动化测试最佳实践》
    主题公开课,通过动手实战,快速掌握 Pytest 进阶技能。

    戳“阅读原文”,提升自己的核心竞争力吧!

    来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力

    点击获取更多信息

  • 相关阅读:
    【Quartz】工作原理
    【Quartz】基本原理
    【Quartz】一个小Demo
    【转载】基于Redis实现分布式锁
    【转载】Java 9 新特性——模块化
    【转载】一致性哈希
    大型网站架构演进
    分布式系统概述
    加入tkmybatis,进行批量插入
    mysql,SqlServer批量插入
  • 原文地址:https://www.cnblogs.com/hogwarts/p/15981076.html
Copyright © 2020-2023  润新知