前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础测试框架之pytest和unittest之间新手如何选择?

基础测试框架之pytest和unittest之间新手如何选择?

作者头像
苦叶子
发布2024-05-06 15:23:38
1010
发布2024-05-06 15:23:38
举报
文章被收录于专栏:开源优测开源优测

在上篇Pytest基础指南之介绍、环境及安装我们已经初步的介绍了Pytest的概念、环境安装及特色,在本文中,我们将介绍如何利用Pytest来兼容基于unittest所编写的测试代码。

再介绍Pytest兼容基于unittest框架所编写的测试代码前,我们需要先理清unittest和Pytest的区别。

unittest是Python所提供的标准的单元测试框架,而Pytest则是基于unittest所研发出来的更好用的、更易用的测试框架,并且Pytest几乎兼容了unittest的所有特性。

在功能方面,unittest仅提供了基本测试框架能力,对于易用性、可扩展能力、测试报告等等方面显得比较弱。

而pytest则是通过插件和hook的方式,以易用性为本,提供了应对各种场景的插件、以及对框架本身的二次开发能力,非常适合企业级的应用。

苦叶子曰:简而言之,初学者有必要通过学习unittest来理解python技术生态的基础测试框架的原理和机制,但在企业实践中应该应用Pytest来组织大规模的测试用例,以提升效率和质量。

下面通过一张表的对比来具体看下二则的一些简单的区别:

unittest测试框架

Pytest测试框架

测试文件

可以任意命名测试文件

必须以test_开头或_test结尾命名

测试类

必须继承unittest.TestCase

类名必须以Test开头

测试函数

必须以test_开头

默认以test开头,可自定义

断言

提供了诸如assertEqual等单个断言能力的函数,例如assertEqual(1, 2)

直接用assert即可,例如assert 1==2

参数化

本质上unittest原生并不提供参数化能力

pytest原生提供了参数化的能力,即pytest.mark.parametrize装饰器

报告

原生并未提供html报告生成能力

提供了pytest-html插件来生成html报告

当然了,第三方有提供了一些能力来支持、扩展unittest的能力,但就其企业级的应用来讲,是远远不足的。

一直以来,苦叶子都是极力推荐大家,初学习阶段应该深入学习和理解unittest的源码、原理和机制,然后在工作中去学习、应用pytest,这并不是什么矛盾的事。

因为unittest作为python的标准库,本身就承担了让大家学习和掌握原理的责任,掌握标准测试框架unittest也是python学习必须经历的阶段。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-27,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 开源优测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com