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

上一篇 / 下一篇  2021-05-19 16:38:20 / 个人分类:单元测试

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

1.发现和载入测试
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 在用例编写、测试夹具、子测试上做出改进,已经能让日常用例编写工作变得更加容易和灵活。同时又引入插件体系,进一步将单元测试框架的能力提升了一个大大的台阶,这让很多在基础测试功能之上的高阶功能的实现和共享成为了可能。也难怪有众多开发者对它们情有独钟。


TAG: 软件测试技术 单元测试

 

评分:0

我来说两句

Open Toolbar