一、Pytest自动化测试框架 — Pytest和unittest测试框架原理
目录
前言
###文章内容有配套的学习视频和笔记都放在了文章末尾###
1、什么是单元测试框架
2、单元测试框架主要做什么
3、单元测试框架和自动化测试框架有什么关系
4、Pytest测试框架说明
5、Pytest框架和Unittest框架区别
重点:配套学习资料和视频教学
前言
大家好我是测试达人,最近我会更新一系列pytest的框架全套教程,不比你在培训机构花的几千块买的ppt教程好吗?==白嫖真香!!
###文章内容有配套的学习视频和笔记都放在了文章末尾###
1、什么是单元测试框架
单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。
2、单元测试框架主要做什么
- 测试发现:从多个文件里面去找到我们需要的测试用例。
- 测试执行:按照一定的顺序和规则去执行测试用例,并生成结果。
- 测试判断:通过断言判断预期结果和实际结果的差异。
- 测试报告:统计测试进度,耗时,通过率等数据,并生成测试报告。
3、单元测试框架和自动化测试框架有什么关系
(1)自动化测试框架作用:
- 提高测试效率,降低自动化用例的维护成本。
- 减少人工干预,提高测试的准确性,增加代码的重用性。
- 核心思想是让不懂代码的人,也能够通过这个框架去实现自动化测试。
(2)Pytest单元测试框架和自动化测试框架的关系
单元测试框架:只是自动化测试框架中的组成部分之一。
pom设计模式、数据驱动、关键字驱动、全局配置文件的封装、日志监控、Selenium
和Requests
的二次封装、报告邮件、断言体系的设计封装等,都是自动化测试框架中的组成部。
4、Pytest测试框架说明
Pytest是Python的⼀种单元测试框架,全功能且非常成熟,同⾃带的Unittest测试框架类似,相⽐于Unittest框架使⽤起来更简洁,效率更⾼。
Pytest测试框架,主要有以下几个特点:
- Pytest是一个非常成熟的Python的单元框架,比Unittest更灵活,容易上手。
- Pytest支持参数化配置。
- Pytest能够支持简单的单元测试和复杂的功能测试,还可以和Selenium,Requests,Appium结合实现web自动化,接口自动化,APP自动化。
- 执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败,也支持重复执行失败的case。(跳过用例和reruns失败用例重试)
即:支持测试用例的skip
和xfail
处理。 - Pytest可以很好的和Jenkins进行持续集成。
- Pytest可以和
allure
生成非常美观的测试报告。 - 在Pytest框架下可以执行Unittest框架的用例。
- Pytest有很多非常强大的第三方插件,并且这些插件能够实现很多实用的操作。
并且也可以自定义Pytest插件。
Pytest官方文档:https://docs.pytest.org/en/latest/contents.html
5、Pytest框架和Unittest框架区别
(1)Unittest
Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest框架则是Python语言的标准单元测试框架。
Unittest支持自动化测试,测试用例的初始化、关闭和测试用例的聚合等功能,它有一个很重要的特性:它是通过类(class)的方式,将测试用例组织在一起。
(2)Pytest
Pytest是Python的另一个第三方单元测试库。它的目的是让单元测试变得更容易,并且也能扩展到支持应用层面复杂的功能测试。
(3)区别
1)用例编写规则:
Unittest
测试框架:
1、提供test.cases
,test suites
,test fixtures
,test rurner
相关类,让测试更加明确、方便、可控。
2、测试文件编写前,必须先导入Unittest
测试框架,import unittest
。
3、测试类必须继承unittest.TestCase
类,且测试类要Test_
开头。(可去掉横线,下同)
4、测试方法要以test_
开头。
5、测试类必须要用unittest.main()
方法执行。Pytest
测试框架:
1、基于Unittest的扩展框架,比Unittest更简洁、更高效。
2、测试文件必须test_
开头。
3、测试类命名必须以test_
开头。
4、测试方法必须test_
开头(函数也一样)。
(规则可自定义。)- 总结:
Unittest
:用例格式复杂,不能兼客Pytest用例。
Pytest
:用例格式简单,可以兼容Unittest用例。
2)用例的前置和后置:
Unittest
测试框架:
提供了setUp/tearDowm
方法,只能针对所有用例。Pytest
测试框架:
1、Pytest提供了模块级、函数级、类级、方法级的setup/teardown
,比Unittest的setup/tearDowm
方法更活。- 模块级
setup_module/teardown_module
:开始于模块始末,全局。 - 类级
setup_class/teardown_class
:只在类中前后运行一次(类中)。 - 函数级
setup_function/teardow_function
:只对函数用例生效(不在类中)。 - 方法级
setup_method/teardown_method
:开始于方法始末(在类中)。 - 类里面的
setup/teardown
:运行在调用方法的前后。
- 模块级
2、函数前加@pytest.fixtures()
装饰器,在测试用例中使用Fixture函数。
可作用于function\module\class\session
中。
fixture
相对于setup/teardown
来说的优势,如下:
- 命名方式灵活,不局限于
setup/teardown
。 conftest.py
配置里可以实现数共享,无需import
就可自动找到配置数据,可供多个.py
文件调用。scope="module"
,可以实现多个.py
文件跨文件共享前置。scope="session"
,可以实现多个.py
文件跨文件使用一个session
来完成用例。- 使用
yeild
返回,相当于teardown
的作用。
3)参数化:
Unittest
测试框架:结合DDT实现参数化。Pytest
测试框架:直接使用@pytest.mark.parametrize
装饰器。
4)断言:
Unittest
测试框架:可使用提供的assertEqual
,assertIn
、assertTrue
,assertFalse
断言方法。Pytest
测试框架:直接使用Python语言内置的assert
表达式。
5)用例分类执行:
Unittest
测试框架:默认执行全部用例,可以通过加载testsuite
执行部分模块的用例。Pytest
测试框架:可以通过@pytest.mark
来标记测试用例,执行命令前加上参数"-m",即可运行标记的用例。
6)失败重运行:
Unittest
测试框架:无。Pytest
测试框架:支持用例执行失败重跑,提供了pytest-rerunfailures
插件。
7)报告:
Unittest
测试框架:使用HTMLTestRunnerNew
库生成测试报告。Pytest
测试框架:使用pytest-HTML
、allure
插件生成测试报告。
重点:配套学习资料和视频教学
那么在这里我也精心准备了上述大纲的详细资料在下方链接如下
一、Pytest自动化测试框架 — Pytest和unittest测试框架原理相关推荐
- 八、Pytest自动化测试框架 — Pytest测试报告
1.pytest-html插件 Pytest可以通过命令⾏⽅式,⽣成xml/html格式的测试报告,并存储于⽤户指定路径. 需要用到pytest-html插件. 安装⽅式:pip install py ...
- Pytest 自动化测试框架
Pytest 自动化测试框架 Pytest和Unittest测试框架的区别? 如何区分这两者,很简单unittest作为官方的测试框架,在测试方面更加基础,并且可以再次基础上进行二次开发,同时在用法上 ...
- python自动化测试框架pytest.pdf_Python自动化测试框架
随着技术的进步和自动化技术的出现,市面上出现了一些自动化测试框架.只需要进行一些适用性和效率参数的调整,这些自动化测试框架就能够开箱即用,大大节省了开发时间.而且由于这些框架被广泛使用,他们具有很好的 ...
- iOS自动化探索(四)自动化测试框架pytest - 安装和使用
自动化测试框架 - pytest pytest是Python最流行的单元测试框架之一, 帮助更便捷的编写测试脚本, 并支持多种功能复杂的测试场景, 能用来做app测试也能用作函数测试 官方文档: ht ...
- pytest自动化测试框架,真正做到从0到1由浅入深详细讲解【万字级】
目录 嗨咯铁汁们,很久不见,我还是你们的老朋友凡叔,这里也感谢各位小伙伴的点赞和关注,你们的三连是我最大的动力哈,我也不会辜负各位的期盼,这里呢给大家出了一个pytest自动化测试框架由浅入深详细讲解 ...
- java自动化测试报告_Java自动化测试框架-10 - TestNG之测试结果篇(详细教程)
1.-测试结果 1.1-成功,失败和断言 测试被认为是成功的,如果它不引发任何异常完成,还是它扔的预期异常(请参阅文档expectedExceptions属性上找到的@Test注释). 您的测试方法通 ...
- java 自动化测试报告_Java自动化测试框架-10 - TestNG之测试结果篇
1.-测试结果 1.1-成功,失败和断言 测试被认为是成功的,如果它不引发任何异常完成,还是它扔的预期异常(请参阅文档expectedExceptions属性上找到的@Test注释). 您的测试方法通 ...
- java testng 优化_Java自动化测试框架-10 - TestNG之测试结果篇(详细教程)
1.-测试结果 1.1-成功,失败和断言 测试被认为是成功的,如果它不引发任何异常完成,还是它扔的预期异常(请参阅文档expectedExceptions属性上找到的@Test注释). 您的测试方法通 ...
- python自动化测试框架pytest.pdf_Python 自动化测试框架 unittest 和 pytest 对比
一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...
最新文章
- mysql教程左右链接_mysql的左右内连接用法实例
- oracle 全局临时变量,如何解析Oracle PL / SQL中的简单XML片段并将其加载到全局临时表中?...
- inet_ntop php,inet_ntop()
- python面试题及答案-Python面试题10道(附答案)看完面试不愁了
- QT自定义窗口插件在QT Creator的应用
- 定时器表达式各组成部分详解
- 重磅 | 数据库自治服务DAS论文入选全球顶会SIGMOD
- 使用jsonpath从kettle转换json2csv
- Build path -No action available/classpath .project
- linux上创建RAID(磁盘阵列)与LVM(逻辑盘)
- 淘宝网手机客户端开发(一)目录篇
- 论文阅读:BPFINet: Boundary-aware progressive feature integration network for salient object detection
- 在磁盘上给文件快速预留一大片空间
- npy文件的保存与读取
- Unity写的3D人工智能棋类博弈小游戏-四子棋
- matlab 误差椭圆,第十章 误差椭圆.doc
- 【Flutter 问题系列第 7 篇】TextField 去掉下划线
- Simulink模块介绍
- powershell ip_如何使用PowerShell更改IP地址
- 锁存器和缓冲器的区别
热门文章
- [附源码]Python计算机毕业设计Django贵港高铁站志愿者服务平台
- 系统级性能调优工具Perf成功移植到龙芯处理器
- Nginx 下配置SSL证书的方法
- 写代码宜工工整整,忌放飞自我|Python代码规范
- 三角形的内点(皮克定理)
- BAPI for BP Relationship Data Mass Maintenance (UKM_BP)
- 燕十八老师JS高级之词法分析笔记
- 公司内部Wiki,你建立了么?
- matlab欠阻尼系统注释,MATLAB 实用教程:第5章MATLAB程序设计
- FusionCompute安装