• 自从学会了Python自动化Pytest框架,领导再也不敢在我背后指手划脚了


    前言

    大家都知道Python有自带的单元测试框架unittest,那为什么还要学习Pytest呢?先了解下Pytest优点


    pytest:

    pytest是一个非常成熟的全功能的Python测试框架,是unittest框架的扩展,主要特点有以下几点:

     1、简单灵活,非常方便的组织自动化测试用例;

     2、支持参数化,可以细粒度地控制要测试的测试用例;

     3、能够支持简单的单元测试和复杂的功能测试,比如web端selenium/移动端appnium等自动化测试、request接口自动化测试

     4、pytest具有很多第三方插件,并且可以自定义扩展,比如测试报告生成,失败重运行机制

     5、测试用例的skip和fail处理;

     6、结合业界最美的测试报告allure+Jenkins,持续集成

    selenium

    基于JavaScript代码库的自动化测试框架,通过脚本语言,模拟用户行为操作,最接近用户真实场景,实现对web自动测试。

    Selenium,是目前的最火爆企业最主流的webUI自动化框架


    环境搭建

    pip install -U pytest

    pytest-xdist #多线程

    pip install -U pytest-rerunfailures   #重试运行cases

    pip install  pytest-html #生成测试报告

    pytest --version # 会展示当前已安装版本


     编写规则

    编写pytest测试样例非常简单,只需要按照下面的规则:

     测试文件以test_开头(以_test结尾也可以)

     测试类以Test开头,并且不能带有 init 方法

     测试函数以test_开头

     断言使用基本的assert即可


     selenium+pytest案例实操

     import pytest # 引入pytest

     def test_a(): # test开头的测试函数

         print("------->test_a")

         assert 1 # 断言成功

     def test_b():

         print("------->test_b")

         assert 0 # 断言失败

     if __name__ == '__main__':

            pytest.main(['-s', 'class01.py'])

    可以包含一个或多个Test开头的测试类,test_开头的函数

    1.测试类主函数模式

      pytest.main(['-s', 'test.py'])

    2.命令行模式运行

      pytest 文件路径/测试文件名


    3. 扩展插件

    3.1. 测试报告: pytest-html

     

    pytest.main(['-s','test.py','--html=./report/result.html'])

    表示当前路径下生成report文件夹,result.html文件

     

    批量运行用例:pytest-xdist

    pytest.main(['-s','test.py','--html=./report/result.html','-n=2'])

    -n=2 表示2个线程并发运行所有的测试用例

     

    allure测试报告:allure-pytest

    运行用例:pytest.main(['-s', '-q', '--alluredir', './report/xml'])

                     pytest 测试目标文件 --alluredir 数据目录

                    运行后的结果,是生成xml的数据集合

    生成报告:allure generate --clean ./report/xml/ -o ./results/html/

             第一个是数据集目录,第二个是生成报告目录

            -o是指向目标生成测试报告的目录;


    conftest配置

    当自动化用例越来越庞大的时候,很多用例的数据可以共享,复用,让用例脚本可读性,维护性更高,比如登录等

    conftest.py 配置里可以实现数据共享,比如py跨文件共享前置

    conftest.py配置脚本名称是固定的,不能改名称

    不需要import导入 conftest.pypytest用例会自动查找

     

    自从使用了pytest框架,爱了爱了,深深的感受到它的可扩展性和灵活性,老板再也不用担心我的自动化效率低


     如果对软件测试、接口测试、自动化测试、技术同行、持续集成、面试经验交流。感兴趣可以进到902061117,群内会有不定期的分享测试资料。

    如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。

  • 相关阅读:
    Android学习路径(两)项目文件本身使用场景和文件演示
    A左右ndroid正在使用Uri监视数据库中的更改
    离PACKET_INp获取信息acket data
    curl 命令
    POJ 3177 Redundant Paths POJ 3352 Road Construction(双连接)
    Linux 下一个 Mysql error 2002 错误解决
    图片打水印 缩放 和一个输入流的转换
    qt Qt5开发
    qt 关于Qt中MVC的介绍与使用
    qt mvc3
  • 原文地址:https://www.cnblogs.com/zzpython/p/13330341.html
Copyright © 2020-2023  润新知