Pytest与Unittest区别

3 篇文章 2 订阅
订阅专栏

总体区别:
Pytest是基于Python语言的单元测试框架,也是一个命令行的工具,可以自动的找到测试用例执行和反
馈反馈测试结果信息,在编写测试点方面比较自由,可以使用函数式的编程等语言,也可以使用面向对
象的编程语言。并且它的断言使用的是Python原生的assert关键字,同时Pytest测试框架可以很完美的
和unittest整合应用到一起,能够很好的进行兼容。Pytest比起unittest来说比较自由,使用unittest首先
要继承TestCase的类,但是pytest是不需要的,安装成功后,直接编写测试函数或者测试⽅法就可以使
用了。下面具体来说Pytest测试框架与unittest测试框架的区别。

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

  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. 可以很好的和jenkins集成
  7. report框架----allure 也支持了pytest

在pytest框架中,有如下约束:
所有的单测文件名都需要满足test_.py格式或_test.py格式。
在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
在单测类中,可以包含一个或多个test_开头的函数。
此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。

在这里插入图片描述
一、用例设计规则

1.unittest

(1)测试类必须继承unittest.TestCase

(2)测试函数必须以”test_”开头

(3)测试类必须有unittest.main()方法

2.pytest

(1)测试文件的文件名必须以”test_”开头,或者以”_test”结尾

(2)测试类命名必须以”Test”开头

(3)测试函数名必须以”test”开头

(4)测试类里面不能使用”init”方法

总结:pytest是基于unittest衍生出来的新的测试框架,使用起来相对于unittest来说更简单、效率来说更高,pytest兼容unittest测试用例,但是反过来unittest不兼容pytest,所以说pytest的容错性更好一些!在使用交互逻辑上面pytest比unittest更全一些!

unittest是python自带的测试库,自我感觉的话,如果对python只是了解基础知识,学unittest框架相对于来说要好理解些,unittest框架也完全可以实现市场上大部分的业务测试!建议可以先了解下unittest框架,然后在学pytest框架,可以更好的去感受一下两个框架的优缺点

二、断言对比

1.unittest 断言

assertEqual(a, b) # 判断a和b是否相等

assertNotEqual(a, b) # 判断a不等于b

assertTrue(a) # 判断a是否为Ture

assertFalse(a) #判断a是否为False

assertIn(a, b) # a 包含在b里面

asserNotIn(a, b) # a 不包含在b里面

……

2.pytest 断言

pytest只需要用assert 来断言就行,assert 后面加需要断言的条件就可以了,例如:assert a = = b # 判断a是否等于b、

assert a != b # 判断a不等于b、assert a in b # 判断b包含a

总结:从断言上面来看,pytest的断言比unittest要简单些,unittest断言需要记很多断言格式,pytest只有assert一个表达式,用起来比较方便

三、用例前置和后置

1.unittest前置和后置

(1)通过setup每个用例执行前执行,teardown每个用例执行后执行

(2)通过setupclass类里面所有用例执行前执行,teardownclass类里面所有用例执行后执行

2.pytest前置和后置

(1)模块级别:setup_module/teardown_module,整个.py全部用例开始前执行/全部用例执行完后执行

(2)函数级别:setup_function/teardown_function,只对函数级别生效,每个用例开始前和结束后执行一次

(3)类级别:setup_class/teardown_function,只对类级别生效,类里面所有用例开始前执行一次,所有用例执行完执行一次

(4)方法级别:setup_method/teardown_method,只是类里面方法级别生效,方法开始前执行一致,方法结束后执行一次

(5)方法级别:setup/teardown,这个与setup_method/teardown_method用法很类似,但是级别比method级别要低,也就是说在同一个方法中会先执行setup_method再执行setup,方法结束后先执行teardown再执行teardown_method

pytest自定义设置前置和后置:

通过firture可以自定义pytest的前置和后置,格式fixture(scope=”function”, params=None, autouse=False, ids=None, name=Noe)

scope:有四个级别,function(默认),class,module,session

params:参数列表

autouse:False为默认值,意思代表需要根据设置的条件(scope级别)来激活fixture,如果为Ture,则表示所有function级别的都被激活fixture

ids:每个字符串id的列表,感觉没啥实质性作用

name:fixture的名字

四、参数化

1.unittest参数化

可以通过nose_parameterized来实现,格式:@nose_parameterized.parameterized.expand(data), ‘data’为list格式的参数化的数据

2.pytest参数化

通过装饰器@pytest.mark.parametrize来实现

五、生成报告方式

1.unittest

通过HTMLTestRunner生成

2.pytest

(1)通过pytest-html生成html格式报告

(2)通过allure生成方案(很详细)

unittestpytest区别
qq_42132922的博客
06-23 990
unittest是python的官方库,功能较少,pytest是第三方库,可支持多种插件,目前有100多种,功能强大。 一、用例编写方面 1、测试文件: unittest必须以test开头,pytest默认以test开头,也可通过配置文件pytest.ini,配置块[python],配置项pytest_files自定义; 2、测试类: unittest不要求测试类定义规则,pytest默认以Test开头,也可自定义; 3、测试方法: unittest必须以test开头,pytest默认以t
pytestunittest区别
xuyandics的博客
02-24 1119
一、用例编写规则 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的第三方测试..
python自动化测试框架pytestunittest区别!!!
qq_41752647的博客
07-04 9449
一、用例设计规则 1.unittest (1)测试类必须继承unittest.TestCase (2)测试函数必须以"test_"开头 (3)测试类必须有unittest.main()方法 2.pytest (1)测试文件的文件名必须以"test_"开头,或者以"_test"结尾 (2)测试类命名必须以"Test"开头 (3)测试函数名必须以"test"开头 (4)测试类里面不能...
一篇文章了解Pytest单元测试框架
最新发布
云泽野の编程日记
09-10 1978
Pytest是一个功能强大且灵活的 Python 测试框架,主要优点包括简洁易用、自动测试发现、丰富的插件生态系统、参数化测试、详细的断言错误信息、以及强大的 fixtures 机制。执行测试类中的测试用例的方法除了在命令行中输入pytest "想要运行文件的测试路径"和点击测试类的小三角之外,还可以创建main方法。对于pytest的安装,可以直接在pycharm中打开终端输入。可以看到这里就报错了,有很明显的红色,红线中的内容就是错误的原因。除了上述运行pytest用例的方式,还可以旁边的小三角执行用例
Pytestunittest区别
菜鸟学识的博客
07-20 9014
api的编写:完整的api测试用例中,要考虑到每个测试点的初始化,测试步骤,测试断言还有清理的操作 unittestpytest框架之间的区别: 1,unittest需要继承unitttest.TestCase类,pytest不需要继承,可以是函数也可以是类。 2,unittest参数化需要依赖第三方库比如说ddt,pytest参数化直接用内部的parametrize 3,unittest测试报告是HTMLTestRunner,pytestPytest-html或allure 4,unitte
Python 自动化测试框架unittestpytest区别
像蚂蚁一样工作,像蝴蝶一样生活
05-08 9659
  引言   前面一篇文章Python单元测试框架介绍已经介绍了python单元测试框架,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成开发自动化测试平台也是可以的。而这篇文章主要讲unittestpytest区别pytest相对unittest而言,代码简洁,使用便捷灵活,并且插件很丰富。   Unittest vs Pyt...
pytestunittest 如何选择?
weixin_48134870的博客
03-26 1092
pytest的语法更简洁,自动发现和执行测试用例的特性可以节省大量时间,而强大的插件机制则提供了更高的灵活性。而unittest作为Python的标准测试框架,其稳定性和与Python的集成度可能更高,对于简单的测试任务可能更为适合。pytestunittest都是Python中常用的测试框架,它们各自具有一些特点和优势,选择哪一个取决于你的具体需求和偏好。:熟悉你要测试的API接口的文档,了解接口的功能、请求参数、响应格式以及可能的错误情况。:能够记录测试过程中的关键信息,并生成易于理解的测试报告。
pytestunittest
weixin_39193977的博客
11-12 863
pytestunittest区别 基本测试用例: unittest- 需要 import unittest ​ 写case必须定义类 ​ 测试类必须继承class TestLogin(unittest.TestCase): ​ 测试用例函数必须以test开头 def test_login1(self): pytest - 需要import pytest ​ 不必须定义类,类和函数都支持 ​ 类必须以Test开头 ​ 函数必须以test开头 断言: unittest- 提供了很多自带的断言,通过
Python中PytestUnittest区别介绍
xiaoweids的博客
06-12 174
PytestUnittest是Python中属于最常用的两个测试框架。那么他们有些什么区别呢?Playwright 为什么只给了Pytest的深度支持,而不是Unittest呢?
pytestunittest区别
沉觞的博客
02-02 706
pytestunittest区别 1、表达用例: unittest 通过定义一个类,继承unittest.TestCase pytest 直接定义类 / 函数 2、断言的表达: unittest:self.assertxxx() pytest:assert 表达式(结果为True-断言成功,结果为False-断言失败) 3、收集用例: unittest:TestLoader类+TestSuite类,discover收集用例 pytest:自动收集用例 4、fixture:前置后置 u
单元测试框架对比
qq_37493425的博客
09-23 752
一、用例编写规则 1.unittest提供了test cases、test suites、test fixtures、test runner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则: (1)测试文件必须先import unittest (2)测试类必须继承unittest.TestCase (3)测试方法必须以“test_”开头 (4)测试类必须要有u...
自动化测试框架unittestpytest区别
jj2772367224的博客
07-26 1012
pytest插件丰富,比如flask插件,可用于用例出错重跑,还有xdist插件,可用于设备并行执行,效率更高。前面文章已经介绍了python单元测试框架,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成开发自动化测试平台也是可以的。参数化应用场景,一个场景的用例会用到多条数据来进行验证,比如登录功能会用到正确的用户名、密码登录,错误的用户名、正确的密码,正确的用户名、错误的密码等等来进行测试,这时就可以用到框架中的参数化,来便捷的完成测试。
unittestpytest对比
weixin_30906185的博客
10-17 879
一、用例编写规则 1.unittest提供了test cases、test suites、test fixtures、test runner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则:   (1)测试文件必须先import unittest   (2)测试类必须继承unittest.TestCase   (3)测试方法必须以“test_”开...
pytestunittest区别
loveliness_peri的博客
05-08 1118
pytestunittest区别 一、用例编写规则 1.unittest提供了test cases、test suites、test fixtures、test runner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则:   (1)测试文件必须先import unittest   (2)测试类必须继承unittest.TestCase  ...
Python自动化测试框架:PytestUnittest区别
2301_77645573的博客
06-13 4933
pytestunittest是Python中常用的两种测试框架,它们都可以用来编写和执行测试用例,但两者在很多方面都有所不同。本文将从不同的角度来论述这些区别,以帮助大家更好地理解pytestunittest
PytestUnittest区别
weixin_51445771的博客
06-30 1270
一、用例编写 unittest 使用自定义的测试类TestFixture(如:MyTestBaidu),必须继承unittest.Testcase TestSuite:测试套件,使用需要声明unittest.Test.TestSuite(). 测试方法必须以“test_”开头 执行测试类必须要方法unittest.main() unittest提供了test_case、test_suite、test_fixture、test_runner相关的类让测试更加明确、方便、可控,使用unitte
Python测试框架:pytestunittest区别
huace3740的博客
01-20 1751
在Python中进行测试时,两个最流行的测试框架是unittestpytest。虽然它们的目标相同,但它们之间存在许多不同之处。本文将详细比较它们在用例编写规则、前置和后置方法、参数化、断言功能、用例执行和报告生成等方面的差异,并适当补充pytest相较于unittest的其他优点。
写文章

热门文章

  • Pytest与Unittest区别 16471
  • 安装多个不同版本chrome浏览器 8022
  • Selenium 中WebDriverWait()方法小计 7786
  • python __getattr__和__setattr__ 5913
  • Selenium关闭多余窗口保留当前窗口 4864

分类专栏

  • robotframework 1篇
  • JavaScript 1篇
  • react
  • docker
  • Pytest 3篇
  • openstack
  • Jenkins 1篇
  • ovs
  • java 6篇
  • Python编程 47篇
  • 网络运维 3篇
  • Linux操作 5篇
  • 软件测试 4篇
  • 杂谈
  • 小知识 3篇
  • 小技巧 1篇
  • 数据分析
  • 数据库
  • python 学习 10篇

最新评论

  • 安装多个不同版本chrome浏览器

    手写情书: 怎么登录谷歌账号 开启同步啊

  • Can‘t pickle local object ‘_createenviron.<locals>.encodekey‘报错解决

    腊鸡陈旭元: 服了,运行之后还是报错,只是换了个方式报错

  • Can‘t pickle local object ‘_createenviron.<locals>.encodekey‘报错解决

    String vs Array: 没有人发现导完包他自动从进程降级为线程了么?

  • java子类新增父类没有的方法

    iiiiPanda: 言简意赅,很好

  • java子类新增父类没有的方法

    iiiiPanda: 言简意赅,很好

最新文章

  • electron-builder打包后找不到代码文件、打包指定资源到安装目录的问题
  • Docker离线安装
  • Screen记录窗口输出日志
2024年2篇
2023年7篇
2022年7篇
2021年10篇
2020年8篇
2019年20篇
2018年32篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢蘑菇雕塑广州商场开业美陈沈阳户外玻璃钢雕塑雕塑玻璃钢价格表上海特色商场美陈售价景观商场美陈六安大型玻璃钢雕塑定制玻璃钢仿铜圆柱脚雕塑郑州玻璃钢卡通雕塑设计甘南玻璃钢动物雕塑公司公园校园玻璃钢雕塑价格专研商场美陈灯光鹤壁玻璃钢雕塑制作厂家台州玻璃钢雕塑制作福建开业商场美陈生产公司卡通雕塑玻璃钢哪家好沈阳多彩玻璃钢雕塑定制青岛商场美陈市场建邺秋季商场美陈荷叶玻璃钢雕塑定制厂家南阳玻璃钢卡通雕塑制作厂家杭州玻璃钢广场雕塑定做陈列性玻璃钢雕塑厂家浙江玻璃钢雕塑供货商瀍河玻璃钢雕塑加工厂家商场美陈经理岗位说明书汕头品质玻璃钢人物雕塑禹州玻璃钢雕塑多少钱龙岩广东景观玻璃钢花盆厂家同益景观玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化