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。
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。
全部评论
相关推荐
05-31 14:50
门头沟学院 C++ 点赞 评论 收藏
分享
昨天 08:10
武汉大学 C++ 点赞 评论 收藏
分享
点赞 评论 收藏
分享
温昂:前面都觉得没啥,看到女朋友就怒了,兄弟罪大恶极啊!!谈不明白就别谈,留给会谈的 点赞 评论 收藏
分享