Python单元测试框架:nose和它的继任者nose2(二)

发表于:2021-5-26 09:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:掘金

  二、nose2
  nose2 是 nose 的继任者。 它们的理念都是让编写和运行测试用例变得更容易。
  它们有很多相同点,比如都兼容 unittest,支持使用函数作为测试用例,支持子测试,拥有插件体系。但也有很多不同点,下面列出一些主要的不同点:

  发现和载入测试
  nose 自行实现了模块加载功能,使用惰性方式加载测试模块,加载一个执行一个。
  nose2 则借助内建的 import() 导入模块,并且是先全部载入,再执行用例
  nose2 并不支持 nose 所支持的所有测试用例项目结构,比如如下用例文件的结构在 nose2 中就不受支持:
.
`-- tests
    |-- more_tests
    |   `-- test.py
    `-- test.py

  测试前置和清理函数级别
  nose 支持方法、类、模块和包级别的测试前置和清理函数
  nose2 则不支持包级别的测试前置和清理函数

  子测试
  nose2 除了支持使用测试生成器来实现子测试外,还支持使用参数化测试(Parameterized tests)来实现子测试
  nose2 除了像 nose 一样支持在测试函数和测试类(不继承于 unittest.TestCase)中支持参数化测试和测试生成器外,还支持在继承于 unittest.TestCase 的测试类中使用

  配置化
  nose 期望所有插件的配置通过命令行参数进行配置
  nose2 则通过配置文件进行控制,以最小化命令行参数让人读得更舒服

  三、小结
  nose 和 nose2 在做到兼容 unittest 上就足以看出它们的目标,那便是要吸引原来那些使用 unittest 的用户来使用它们。它们确实做到了!
  nose 和 nose2 在用例编写、测试夹具、子测试上做出改进,已经能让日常用例编写工作变得更加容易和灵活。同时又引入插件体系,进一步将单元测试框架的能力提升了一个大大的台阶,这让很多在基础测试功能之上的高阶功能的实现和共享成为了可能。也难怪有众多开发者对它们情有独钟。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号