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

发表于:2021-6-11 09:44

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

 作者:佚名    来源:搜狗

#
Nose
分享:
  上一篇文章介绍了 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。

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号