码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python单元测试


    Python单元测试

      • 1、Pytest模块
      • 2、Pytest测试用例的运行参数
      • 3、Pytest测试用例的运行方式
      • 4、Pytest测试用例的执行顺序
      • 5、Pytest基本使用
      • 6、用例前置与后置(Fixture夹具)
      • 7、参数化测试
      • 8、断言
      • 9、测试用例重跑
      • 10、跳过测试用例
      • 11、Allure
      • 12、退出Pytest模式


    1、Pytest模块


    Python接口测试的主要模块有:Unittest和Pytest

    Unittest是Python自带的单元测试框架,Pytest是一个第三方单元测试框架,具有丰富的插件生态,兼容Unittest测试集,社区繁荣

    Pytest特性有:

    • Pytest可以和Selenium、Requests、Appium结合实现Web自动化、接口自动化、App自动化

    • Pytest可以实现测试用例的跳过以及reruns失败用例重试

    • Pytest可以和Allure生成非常美观的测试报告

    • Pytest可以和Jenkins持续集成

    例如:

    """
    pytest-html            生成html格式的自动化测试报告
    pytest-xdist           测试用例分布式执行,多CPU分发
    pytest-ordering        用于改变测试用例的执行顺序
    pytest-rerunfailures   用例失败后重跑
    allure-pytest          用于生成美观的测试报告
    pytest-selenium        集成Selenium
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    安装:

    pip install pytest
    
    • 1

    Pytest框架的用例执行入口:

    pytest.main(args参数列表)
    
    • 1

    2、Pytest测试用例的运行参数

    '''
    -s: 显示程序中的print/logging输出
    -v: 丰富信息模式,输出更详细的用例执行信息
    -vs: 该两个参数可一起使用
    -q: 安静模式,不输出环境信息
    -x: 出现一条测试用例失败就退出测试
    -n=num: 多线程或分布式运行测试用例(需要先安装pytest-xdist)
    --html=./report.html: 生成xml/html格式测试报告(需要先安装pytest-html)
    --reruns num:重试运行测试用例(需要先安装pytest-rerunfailures)
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3、Pytest测试用例的运行方式


    1) 主函数模式

    '''
    pytest.main()              运行当前目录下所有以test开头或结尾的文件
    pytest.main(['test.py'])   运行指定模块
    pytest.main(['./test'])    运行指定目录
    通过nodeid指定用例运行:nodeid有模块名、分隔符、类名、方法名、函数名组成
    pytest.main(["test.py::Test_Class"])                 指定类名
    pytest.main(["test.py::Test_Class::test_method"])    指定方法
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2) 终端命令行模式

    '''
    pytest                     运行所有,当传入参数-s、-v、-x时,相当于命令行输入pytest -s -v -x
    pytest test.py             运行指定模块
    pytest ./test              运行指定目录
    pytest test.py::Test_Class::test_method       指定方法
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3) 通过pytest.ini配置文件运行

    位置:一般放在项目的根目录

    编码:必须是ANSI,可以使用Notepad++修改编码格式

    作用:改变Pytest默认的行为

    运行规则:不管是主函数的模式运行,还是命令行模式运行,都会去读取这个配置文件

    例如:

    '''
    [pytest]
    # 命令行参数,多个参数使用空格分隔
    addopts = -vs
    # 测试用例文件夹(目录)
    testpaths = ../pytestproject
    # 测试搜索的模块文件名称
    python_files = test*.py
    # 测试搜索的测试类名
    python_classes = Test*
    # 测试搜索的测试函数名
    python_functions = test*
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4、Pytest测试用例的执行顺序


    Pytest:默认从上到下执行

    改变默认执行顺序:使用mark标记

    @pytest.mark.run
    • 相关阅读:
      生成指定长度的随机数字,用对方法精准提效数10倍!
      负载平衡介绍
      基于深度学习YOLOv8\YOLOv5的花卉识别鲜花识别检测分类系统设计
      政策早知道,2022年武汉青山区科技创新发展奖励补贴政策以及申报条件
      两步将 CentOS 6.0 原地升级并迁移至 RHEL 7.9
      OptiMode应用矢量有限元法模拟表面等离子体激元
      城商行数据仓库数据测试总结:方法、流程、策略和常见问题
      Flask的一种启动方式和三种托管方式
      【【萌新的STM32学习-27--USART异步通信配置步骤】】
      java计算机毕业设计菜谱宣传系统源码+系统+lw文档+mysql数据库+部署
    • 原文地址:https://blog.csdn.net/weixin_55629186/article/details/133150530
    • 最新文章
    • 沪漂五周年了:我越来越迷茫了
      Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
      MySQL-Seconds_behind_master的精度误差
      [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
      AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
      Agent OS :五种驯服不确定性的范式
      PortSwigger SQL注入LAB11
      数据库即时编译JIT
      [Begin]AI Learn Data Day 0
      深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    小工具 小游戏
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

    京公网安备 11010502049817号