nose2 这个自动化工具让我写代码快了一倍 (二)

上一篇文章介绍了 nose2 的简单的使用,请参考:nose2 这个自动化工具让我写代码快了一倍 。

而这一篇则是介绍 nose2 的一些高级特性。

测试用例方法的编写

与unittest不同的是,nose2 的测试用例并不一定要以类的形式存在,也可以使用函数。任何函数和类,只要名称匹配一定的条件(例如,以test开头或以test结尾等),都会被自动识别为测试用例。

参数化

类似于 unittest 当中的 ddt 模块,不过比 ddt 模块使用起来简洁一些。在测试过程当中,通常会有多组测试用例数据,多组测试用例会共用一个测试用例的方法,从而实现数据驱动。在 nose2 当中你可以这样使用:

1, @params(*test_data) 会接收外部传进来的多组测试数据;

2,test_add(data) 当中的 data 每次取出一组数据运行,所以,data 其实就是 {“data”: (1, 2), “expected”: 3} 这样的一组数据。

3,这里因为有 3 组数据,所以运行的时候会有 3 个测试用例。

测试夹具

测试夹具是为了给测试用例准备前置条件和后置条件。

@with_setup(before_test) 表示在测试用例执行之前要执行的前置条件

@with_teardown(after_test) 表示在测试用例执行之后的后置条件

before_test 和 after_test 是自己定义的函数

nose2 vs unittest

nose2 上手会比 unittest 更简单。

使用 unittest, 需要同时掌握 testrunner, testsuite, testcase 等基本概念,还需要熟悉类和对象。 nose2 隐藏了这些细节设计,难度会更低一些。

nose2 可以直接运行 unittest 的测试用例,可以实现无缝切换。

但是并不是说 unittest 就不好。 unittest 做为一个 python 标准库,和 python 版本绑定,非常稳定,不用担心兼容性的问题。

如果要学习一个单元测试框架,建议从 unittest 开始,因为你可以接触到 loader, suite, runner 这样的组件,对理解测试框架更有帮助,学习好 unittest 以后,再学习 nose2 或者 pytest 这样更高级的框架,能有效提升编程效率。

nose2 vs pytest

如果你只想学习一个高级单元测试框架,建议你学 pytest, 而不是 nose2。

nose2 足够好,甚至看上去他的设计比 pytest 更加清晰,更容易理解。但是社区没有 pytest 活跃,因此使用的人也比较少。

实际上,nose2 和 pytest 的用法很多都是非常类似的,学习了一个,另外一个也能轻松上手。nose2 对于加深对测试框架的理解有很大的好处,建议python自动化测试工程师都了解下 nose2。

说明:本文为柠檬班雨泽老师原创,转载需注明出处。

领取100G测试资料

让软件测试学习变得更简单!

今天的分享就到这里了

如对此文有疑问?

赶紧在留言区留言吧~

发布了1 篇原创文章 · 获赞 0 · 访问量 9

猜你喜欢

转载自blog.csdn.net/ningmengban1/article/details/104270673
今日推荐