Pytest框架的使用

1、Pytest介绍

        基于unittest之上的单元测试框架(1)、自动发现测试模块和测试方法;(2)、断言使用assert+表达式即可;(3)、可以设置会话(从运行所有用例开始-用例结束)级,模块(.py)级,类级(setupClass/teardownClass),函数(测试用例)级的fixtures,数据准备+清理工作(4)、有丰富的插件,300+以上。==allure(5)、测试用例不一定要放在测试类当中。安装命令:pip install pytest安装html报告插件:pip install pytest-htmlpytest插件地址:http://plugincompat.herokuapp.com/pytest收集测试用例的规则:(1)、默认从当前目录中收集测试用例,即在哪个目录下运行pytest命令,则从哪个目录当中搜索;(2)、搜索规则:a、符合命名规则,test_*.py 或者 *_test.py的文件;b、以test_开头的函数名;c、以Test开头的测试类,(没有__init__函数)当中,以test_开头的函数;d、断言使用基本的assert即可;Pytest的特点:1、简单灵活,容易上手,文档丰富;2、支持参数化,可以细粒度地控制要测试的测试用例;3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);4、pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如:pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等;5、测试用例的skip和xfail处理;6、可以很好的和CI工具结合,例如jenkins

2、pytest之mark功能

        mark机制  4.6先注册  pytest.ini  [pytest] markers=标签名:说明去给用例打标签@pytest.mark.已注册的标签名测试类和模块: 类下面设置类属性值,模块下面设置全局变量。pytestmarker=pytest.mark.已注册的标签名多个标签:pytestmarker=[pytest.mark.已注册的标签名,pytest.mark.已注册的标签名]

3、pytest之命令运行用例

4、pytest之fixture功能

        (1)、定义fixture1.1 创建了一个conftest.py文件1.2 在conftest中,创建fixture1.3 定义函数,函数前面加上@pytest.fixture(scope=作用域)函数内部:yield 隔开前置后后置的代码,之前是前置,之后是后置yield 返回值(后面跟上返回值用于调用)(2)、调用fixture在测试用例.测试类 前面加上(@pytest.mark.usefixtures("fixture对应的函数名称"));fixture对应的函数名称=它的返回值;fixture对应的函数名称作为测试用例的参数,将返回值传给测试用例;fixure  在conftest.py当中,定义的时候,就已经决定了他的用例域,决定了它的命运;fixture可以有很多个;无论在测试类、测试用例去主动调用fixture,都不能够改变它的命运;调用就是决定在哪儿去使用它。在哪个测试类?pytest的用例执行顺序:基本原则:按照搜索规则,先匹配到的先执行。1、文件名称:按名称名称顺序去搜索。先找到的,先去内部找用例。2、在py文件内部:按照代码顺序去找用例。先找到的先执行。(3)、fixture暂不支持与unittest同用,断言都用assert.(4)、pytest之fixture参数化-多运行,pytest层级覆盖。测试用例与其同级或者在其子目录(5)、fixture的scope参数scope参数有四种,分别是'function','module','class','session',默认为function。function:每个test都运行,默认是function的scopeclass:每个class的所有test只运行一次module:每个module的所有test只运行一次session:每个session只运行一次(6)、setup和teardown操作setup,在测试函数或类之前执行,完成准备工作,例如数据库链接、测试数据、打开文件等teardown,在测试函数或类之后执行,完成收尾工作,例如断开数据库链接、回收内存资源等备注:也可以通过在fixture函数中通过yield实现setup和teardown功能(7)、fixture定义与调用定义  == 定命运。session、modle、class、function调用  == 你准备把它在哪儿用?session:整个会话都有效。module:模块内有效。class:类内有效。function:测试用例内有效。conftest.py文件。 === 定义多个fixture.

5、pytest之参数化—ddt

        参数化  ddt   参数名 = 用例的参数名称在测试用例的前面加上:@pytest.mark.parametrize("参数名",列表)参数名:用来接收每一项数据,并作为测试用例的参数;@pytest.mark.parametrize("参数1,参数2",[(数1,数2),(数1,数2)]);排列组合。多个参数的值排列组合。在一个用例前面 ,使用多个@pytest.mark.parametrize示例:用例有4个:0,2/0,3/1,2/1,3@pytest.mark.parametrize("x", [0, 1])@pytest.mark.parametrize("y", [2, 3])def test_foo(x, y):pass

6、pytest之重运行

        插件名称:rerunfailures安装方法:pip install pytest-rerunfailures(失败case重复执行)使用方式:命令行参数形式:命令:pytest -reruns 重试次数比如:pytest --reruns 2 表示:运行失败的用例可以重新运行两次命令:pytest --reruns 重试次数 --reruns-delay 次数之间设置的延时(单位:秒)Pytest --reruns 2 --reruns-delay 5表示失败的用例可以重新运行2次,第一次和第二次的时间间隔为5秒;

7、pytest之HTML报告

        测试报告  = junitxml,html,allure1、先装插件2、命令行的参数:--html=相对路径/report.html   # 相对于pytest命令运行时,所在的根目录。--alluredir=相对路径3、安装allure命令行工具:下载,解压,配置环境变量4、生成allure文件之后,用命令:allure serve allurediros.system("")allure与jenkins的集成、重运行机制、pytest中的失败截图。Pytest可以生成多种样式的结果: pytest plugin(下载插件用)1、生成JunitXML格式的测试报告:命令:--junitxml = path2、生成result log格式的测试报告:命令:--resultlog=report、log.txt3、生成Html格式的测试报告:命令:--html=report\test_one_func.html(相对路径)# pytest -v -s -m demo --html=Demo/PO_V6/Outputs/reports/pytest_run_reports.html

8、pytest之allure测试(allure测试报告)

         https://docs.qameta.io/allure/#_pytest

Pytest-Pytest框架的使用相关推荐

  1. pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 一.介绍 本篇文章是<聊聊 Python 的单元测试框架>的第三篇,前两篇分别介绍了标准库 unittes ...

  2. python制作考试系统_Python系统学习 - Pytest单元测试框架

    哈咯,大家,我们今天来学习pytest单元测试框架,这个框架要比unittest更加易于使用,结构性也更加好,希望大家能够从中学习到有用的东西,然后在下一章,我们来使用pytest单元测试框架来搭建一 ...

  3. Python + Pytest 自动化框架的用例依赖实操

    今日分享主题:Python + Pytest 自动化框架中测试用例依赖的探索与实践,今天分享的内容以"依赖别名+scope='package'"进行演示. 1.安装 pytest- ...

  4. Pytest 自动化测试框架

    Pytest 自动化测试框架 Pytest和Unittest测试框架的区别? 如何区分这两者,很简单unittest作为官方的测试框架,在测试方面更加基础,并且可以再次基础上进行二次开发,同时在用法上 ...

  5. pytest测试框架学习笔记

    安装pytest pip是python包管理工具 pip install pytest pytest 生态是由pytest本身和pytest插件 共同构成的: pytest:框架本体 pytest-h ...

  6. Pytest测试框架(二):pytest 的setup/teardown方法

    系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...

  7. Pytest测试框架的基本使用和allure测试报告

    一.测试用例的识别与运行 目录识别 通过pytest.ini配置文件配置 如果未指定任何参数,则收集从testpaths(如已配置)或当前目录开始.另外,命令行参数可以在目录.文件名或节点ID的任何组 ...

  8. Web自动化之Pytest测试框架

    pytest是一个python的单元测试框架,可以用于自动化测试中. 用例规则 pytest命令执行测试时,如果我们不指定具体的文件,PyTest默认从当前路径及其所有子目录中搜索py源文件,所有名字 ...

  9. pytest测试框架——allure报告

    文章目录 一.allure的介绍 二.allure的运行方式 三.allure报告的生成 方式一.在线报告.会直接打开默认浏览器展示当前报告 方式二.静态资源文件报告(带index.html.css. ...

  10. python pytest测试框架(一)

    目录 一.安装 二.第一个测试例子 三.pytest参数 1.-K EXPRESSION 3.--maxfail=num 4.-m MARKEXPR 5. -v, --verbose 6.-q, -- ...

最新文章

  1. oracle精度制的数据类型,ORACLE 中NUMBER 类型 低精度转换成高精度
  2. Linux学习(二)--远程登录Linux系统
  3. 如何将视频网站中的视频插入到博客中
  4. asp.net使用easyUI 前后台数据交互
  5. javascript字典中添加数组_如何在JavaScript中使用数组方法:Mutator方法
  6. redis 管理工具_「程序猿同事的分享」redis cluster管理工具redis-trib.rb详解
  7. 第三周作业(三)WordCount
  8. Netty工作笔记0049---阶段内容梳理
  9. 交叉熵反向求导计算过程
  10. python蜂鸣器天空之城频率_蜂鸣器版天空之城
  11. 入侵检测——WebCrack
  12. Java实现POS打印机无驱打印(转)
  13. excel工作表限制编辑怎么删除
  14. win10下Linux双系统
  15. 联想服务器怎么加硬盘分区,联想EDU硬盘保护OEM分区的创建以及安装方法
  16. Luat 功能开发教程(十六) LittleVGL
  17. java线程报时代码_什么?一个核同时执行两个线程?
  18. 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作
  19. 荣耀有鸿蒙手机吗,鸿蒙系统支持名单曝光,这些华为/荣耀可以升级,有你的手机吗?...
  20. 同态加密:分圆多项式简介

热门文章

  1. 一款跨平台小巧的端口爆破工具
  2. Micropython史上最友好的编辑器,小巧精悍
  3. 利用计算机实现对个别学习者,利用计算机实现对学习者进行个别指导的教学模式是基于( )理论。...
  4. python查答案_大学慕课Python编程基础答案查题公众号
  5. C++在类对象上使用新式for循环
  6. 学计算机做人需要有什么基础,计算机专业学生装逼入门(文/郭策)
  7. Acer Predator PT715 Quanta ZGL REV3A笔记本电路原理图纸
  8. 推荐这款,SpringBoot 开源商城系统,挣钱太轻松了
  9. cmake:通过CMAKE_CXX_COMPILE_FEATURES判断编译器是否支持C++11
  10. 中国科学技术大学计算机科学夏令营,2018年中国科学技术大学第五届计算机科学考研推免夏令营通知...