python单元测试框架之unittest和pytest的区别
前言
今天呢笔者想和大家来聊聊Python单元测试框架,我们都知道python单元测试框架有很多,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成开发自动化测试平台也是可以的。而这篇文章主要讲unittest与pytest的区别,pytest相对unittest而言,代码简洁,使用便捷灵活,并且插件很丰富。废话不多说了咱们直接进入主题哟。
一、用例编写规则
1.unittest提供了test cases、test suites、test fixtures、test runner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则:
(1)测试文件必须先import unittest
(2)测试类必须继承unittest.TestCase
(3)测试方法必须以“test_”开头
(4)测试类必须要有unittest.main()方法
2.pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效。使用pytest编写用例,必须遵守以下规则:
(1)测试文件名必须以“test_”开头或者"_test"结尾(如:test_ab.py)
(2)测试方法必须以“test_”开头。
(3)测试类命名以"Test"开头。
总结: pytest可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。 pytest插件丰富,比如flask插件,可用于用例出错重跑;还有xdist插件,可用于设备并行执行。
二、用例前置和后置
1.unittest提供了setUp/tearDown,只能针对所有用例。
2.pytest提供了模块级、函数级、类级、方法级的setup/teardown,比unittest的setUp/tearDown更灵活。
模块级(setup_module/teardown_module)开始于模块始末,全局的
函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
方法级(setup_method/teardown_method)开始于方法始末(在类中)
类里面的(setup/teardown)运行在调用方法的前后
3.pytest还可以在函数前加@pytest.fixture()装饰器,在测试用例中装在fixture函数。fixture的使用范围可以是function,module,class,session。
firture相对于setup和teardown来说有以下几点优势:
命名方式灵活,不局限于setup和teardown这几个命名
conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置,可供多个py文件调用。
scope="module" 可以实现多个.py跨文件共享前置
scope="session" 以实现多个.py跨文件使用一个session来完成多个用例
用yield来唤醒teardown的执行
三、断言
1.unittest提供了assertEqual、assertIn、assertTrue、assertFalse。
2.pytest直接使用assert 表达式。
四、报告
1.unittest使用HTMLTestRunnerNew库。
2.pytest有pytest-HTML、allure插件。
五、失败重跑
1、unittest无此功能。
2、pytest支持用例执行失败重跑,pytest-rerunfailures插件。
六、参数化
1、unittest需依赖ddt库,
2、pytest直接使用@pytest.mark.parametrize装饰器。
七、用例分类执行
1、unittest默认执行全部用例,也可以通过加载testsuit,执行部分用例。
2、pytest可以通过@pytest.mark来标记类和方法,pytest.main加入参数("-m")可以只运行标记的类和方法。
八、如果不好看,可以看下面表格:
总体来说,unittest用例格式复杂,兼容性无,插件少,二次开发方便。pytest更加方便快捷,用例格式简单,可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。pytest插件丰富,比如flask插件,可用于用例出错重跑,还有xdist插件,可用于设备并行执行,效率更高。
总结
今天的文章就到这里了哟,喜欢的小伙伴可以点赞收藏评论加关注哟。
python单元测试框架之unittest和pytest的区别相关推荐
- Python单元测试框架之unittest+requests+ddt+excel接口自动化测试
unitetest是python里单元测试框架,是基于 java 的 junit 测试框架 相当于是一个 python 版的 junit,除了 unittest,还有一个 pytest 框架 unit ...
- Python单元测试框架介绍
背景 为啥把单元测试框架介绍放到这里讲,其实主要是想讲pytest框架的应用.这也是应网友的心声.其实pytest框架我以前是用在实际项目中的,只是一直没有将实践过程和经验教训沉淀下来.如今,我想还是 ...
- python自动化测试框架哪个好_Python 自动化测试框架unittest与pytest的区别
引言 前面一篇文章Python单元测试框架介绍已经介绍了python单元测试框架,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成开发自动化测试平 ...
- python测试框架untest_Python测试框架之unittest和pytest
目前搜狗商城接口测试框架用的是unittest+HTMLTestRunner,case数有1097条,目前运行一次自动化测试,时长约为30分钟,期望控制在10分钟或者更短的时间内.近期打算重新优化框架 ...
- Python单元测试框架之pytest 3 -- fixtures
From: https://www.cnblogs.com/fnng/p/4769020.html Python单元测试框架之pytest -- fixtures 2015-08-29 13:05 b ...
- Python单元测试框架Pyunit 的使用
Python单元测试框架Pyunit 使用示例: 1 import unittest 2 3 class Person: 4 def age(self): 5 return 34 6 def name ...
- 【整理】Python 单元测试框架 - PyUnit
1 概况 Python单元测试框架(The Python unit testing framework),简称为PyUnit, 是Kent Beck和Erich Gamma这两位聪明的家伙所设计JUn ...
- [转]Python测试框架对比----unittest, pytest, nose, robot framework对比
测试框架 什么是框架? 框架(Framework)是整个或部分系统的可重用设计, 框架是用来解决代码的组织及运行控制问题的. 在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求, ...
- python单元测试框架作用_Python单元测试框架:Pytest简介
Pytest简介 入门简单,文档丰富 支持单元测试.功能测试 支持参数化 重复执行,部分执行,测试跳过 兼容其他测试框架(nose,unittest等) 支持生成html报告 可集成CI环境(Jenk ...
最新文章
- 安装Hadoop系列 — 导入Hadoop源码项目
- 分享10个实用的高效办公神器,极大地提高办公效率
- LoRa VS NB-IoT,一场物联网时代C位争夺战
- mysql 连续签到天数_天天拿帮会通宝 帮会签到真给力
- [转自脚本之家] Javascript cookie 详解
- T端音乐盒子-NPC脚本
- php 微盘系统教程,新版微盘API接口调用方法
- python浮雕图片_python图像数据增强——imgaug (二)
- Adobe Flex初记
- 编写MapReduce程序,实现WordCount
- 虚拟机怎么启动共享文件服务器,VMware虚拟机中ubuntu启用本地文件共享的设置方法...
- SIFT(Scale Invariant Feature Transform) 算法小结及实验
- snort:Packet结构体详解(留坑)
- 搜狗输入法原先能在word中输入中文,现在不行。
- 手游人类一败涂地联机一直连接服务器,人类一败涂地手游怎么联机
- python学习相关软件
- 谷歌中阻止冒泡在火狐中失效_如何在Google表格中乘数字
- cursor的所有样式
- php花朵飘落特效,【新年气象】WordPress 主题添加花瓣飘落特效
- 5G的前世今生---简述移动通信的发展
热门文章
- Linux 的wget命令和rz和sz命令
- 简单易操作 VsCoe离线安装插件【步骤+图片+插件】
- matlab生鲜或农产品(河马等)配送路径优化研究【matlab优化算法十八】
- c语言中有bool变量吗,C语言中有bool类型吗?
- Spark远程调试+页面监控--用最熟悉的方式开发Spark应用
- Opencv(C++)学习系列---特征点检测和匹配
- UML类图中连接线与箭头的含义(转)
- 基于ssm阳光心理健康网站的设计与实现-计算机毕业设计源码+LW文档
- STM32单片机入门例程(1.GPIO端口硬件结构)
- 网件WNR2200 Openwrt固件, 改进刷机方法