pytest 与 unittest 区别:软件测试学习笔记

一、基础安装区别
1、unittest:python 自带标准模块,不用 pip 安装,环境自带就能直接使用。
2、pytest:第三方框架,需要手动 pip 安装才能使用。

二、用例编写规则
1、unittest:必须创建测试类,并且继承 TestCase 类;测试方法名称必须以 test 开头,不满足规则不会被执行。只能类里面写测试方法,不能单独写测试函数。
2、pytest:写法自由,既可以单独写 test 开头的函数,也能写测试类,类不用继承任何类;文件、函数、类只要命名符合 test 开头规则,自动识别收集用例,规则宽松。

三、断言写法
1、unittest:不能直接用原生 assert,只能使用框架自带断言方法,比如相等、包含、布尔判断都有单独方法,写法固定繁琐。
2、pytest:直接使用 python 原生 assert 语句,任意判断表达式都能写,报错自动展示详细对比信息。

四、前置后置(固件)
1、unittest:固定四个生命周期方法,分别是用例前后、类前后;作用域固定,不能跨文件共用前置后置代码,复用性差。
2、pytest:依靠 fixture 装饰器实现前置后置,支持函数、类、模块、全局会话四种作用域;依靠 conftest 文件实现跨文件共用固件,灵活复用。

五、参数化功能
1、unittest:原生没有参数化功能,想要实现需要自己封装代码或者引入第三方库。
2、pytest:内置参数化装饰器,原生直接实现多组数据跑同一个用例。

六、用例管理与标记
1、unittest:没有用例标签标记功能,筛选用例只能指定文件、类名、方法名,跳过用例写法复杂。
2、pytest:支持 mark 自定义标签,可按冒烟、功能、回归分类用例,按需筛选执行;跳过、预期失败用例装饰器写法简单。

七、插件与报告
1、unittest:原生无丰富插件,自带执行结果简陋,想要美观报告需要额外自己整合工具。
2、pytest:插件生态完善,html 报告、allure 报告、失败用例重跑、多线程并发执行全都靠插件实现,企业自动化标配。

八、兼容性
1、unittest:无法运行 pytest 格式用例。
2、pytest:全兼容 unittest 所有测试用例,老项目 unittest 脚本不用改动就能用 pytest 执行。

九、优缺点总结
unittest
优点:免安装、官方内置、语法规范统一,无第三方依赖,稳定性高,老项目存量脚本多。
缺点:代码冗余、写法死板、扩展差、复用难、缺少实用功能。
pytest
优点:代码简洁开发快、功能齐全、扩展性强、兼容旧用例、插件丰富,企业新项目自动化首选。
缺点:需要额外安装,高阶 fixture、conftest 用法需要学习。
十、选用场景
1、维护多年老项目原有自动化脚本:使用 unittest。
2、新项目搭建接口、UI 自动化框架:优先 pytest。
3、快速编写小批量测试脚本:选用 pytest。
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-01 10:32
26届,双非本,还有20多天就要毕业了,我现在 0 offer。感觉自己的人生要完蛋了。。。但是又能怪谁,全都是我自己作的。我有罪、对不起面试被我放鸽子的面试官。面试定的早上9点,结果我定错了闹钟定成了第二天的早上9点,等我睡醒的时候已经是快10点了。。。。我有罪、对不起帮助我的学长,秋招的时候有个学长帮我看简历、还内推我了一家还不错的大厂,但岗位不是太合适。我听说大厂都会看面评,我怕表现不好脏面评,就不敢面了,然后那场面试就鸽了。学长后来问我,我撒谎说自己生病了。。我有罪、对不起支持我的女朋友!!她之前家里一堆事情,爸爸生病了,她请假回家了几天,又立马回来陪我,陪我去双选会、看到好的招聘机会都会发给我,我自己心态不好,经常不回信息、冲她发脾气。有天晚上我发神经迁怒她,讲了非常难听的话,她什么都没说,只让我早点休息,她一直都在包容我。。。我有罪,秋招本来有个小厂offer,但当时拒掉了。主要是觉得春招能找到更好的,结果现在春招没offer了,前天问hr想舔回来,人家已经招到人了。。。我对不起父母、我该死!!我爸妈到现在还以为我"在面试阶段"。我妈上周打电话还说"不着急,慢慢挑"。我挂了电话哭了半小时。我不是在挑,妈,我是真的没有人要。 但我是真的不知道接下来该怎么办了。秋招春招全寄了、应届身份马上就没了。我就是欠骂!我就是该死!牛爷爷们,我还有救吗?
温昂:前面都觉得没啥,看到女朋友就怒了,兄弟罪大恶极啊!!谈不明白就别谈,留给会谈的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务