Python单元测试框架unittest使用方法讲解

 更新时间:2015年04月13日 09:53:55   投稿:junjie  
这篇文章主要介绍了Python单元测试框架unittest使用方法讲解,本文讲解了unittest概述、命令行接口、测试案例自动搜索、创建测试代码、构建测试套件方法等内容,需要的朋友可以参考下

概述

1.测试脚手架(test fixture)

测试准备前要做的工作和测试执行完后要做的工作.包括setUp()和tearDown().

2.测试案例(test case)

最小的测试单元.

3.测试套件(test suite)

测试案例的集合.

4.测试运行器(test runner)

测试执行的组件.

命令行接口

可以用命令行运行测试模块,测试类以及测试方法.

复制代码 代码如下:

python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method

可加-v打印详细信息
复制代码 代码如下:

python -m unittest -v test_module

测试案例自动搜索

unittest支持简单的test discovery. 命令行传入discovery后,框架会自动在当前目录搜索要测试的案例并执行.搜索目录必须是包或者模块.基本使用如下:

复制代码 代码如下:

cd project_directory
python -m unittest discover

子选项如下:
-v, –verbose
输出信息的详细级别

-s, –start-directory directory
开始搜索目录 (默认为当前目录)

-p, –pattern pattern
匹配的文件名 (默认为test*.py)

-t, –top-level-directory directory
搜索的顶层目录 (默认为start directory)

创建测试代码

1.方式一

创建子类继承unittest.TestCase,然后重写以下方法

复制代码 代码如下:

class WidgetTestCase(unittest.TestCase):
    def setUp(self):
        pass
    def runTest(self):
        pass
    def tearDown(self):
        pass

运行

2.方式二

编写以test开头的方法

复制代码 代码如下:

class WidgetTestCase(unittest.TestCase):
    def setUp(self):
        pass

    def test_xx1(self)
    def test_xx2(self)
    ...
    def test_xxN(self)

    def tearDown(self):
        pass


构建测试套件

方式一

复制代码 代码如下:

widgetTestSuite = unittest.TestSuite()
widgetTestSuite.addTest(WidgetTestCase('test_default_size'))
widgetTestSuite.addTest(WidgetTestCase('test_resize'))

方式二(推荐)

复制代码 代码如下:

def suite():
    suite = unittest.TestSuite()
    suite.addTest(WidgetTestCase('test_default_size'))
    suite.addTest(WidgetTestCase('test_resize'))
    return suite

方式三(推荐)
复制代码 代码如下:

def suite():
    tests = ['test_default_size', 'test_resize']
    return unittest.TestSuite(map(WidgetTestCase, tests))

方式四

多个测试套件构建成更大的测试套件

复制代码 代码如下:

suite1 = module1.TheTestSuite()
suite2 = module2.TheTestSuite()
alltests = unittest.TestSuite([suite1, suite2])

方式五

unittest的TestLoader提供生成默认的测试套件

复制代码 代码如下:

suite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase)

忽略测试案例( Python2.7支持)

可以分无条件忽略和有条件忽略,通过装饰器实现

复制代码 代码如下:

class MyTestCase(unittest.TestCase):

    @unittest.skip("demonstrating skipping")
    def test_nothing(self):
        self.fail("shouldn't happen")

    @unittest.skipIf(mylib.__version__ < (1, 3),
                     "not supported in this library version")
    def test_format(self):
        # Tests that work for only a certain version of the library.
        pass

    @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
    def test_windows_support(self):
        # windows specific testing code
        pass


测试类也可以忽略
复制代码 代码如下:

@unittest.skip("showing class skipping")
class MySkippedTestCase(unittest.TestCase):
    def test_not_run(self):
        pass

相关文章

  • pyCaret效率倍增开源低代码的python机器学习工具

    pyCaret效率倍增开源低代码的python机器学习工具

    这篇文章主要介绍了pyCaret一款可以使效率倍增的开源低代码的python机器学习工具,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • Python迅速掌握语音识别之知识储备篇

    Python迅速掌握语音识别之知识储备篇

    语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域
    2021-11-11
  • Python 实现数据结构中的的栈队列

    Python 实现数据结构中的的栈队列

    这篇文章主要介绍了Python 实现数据结构中的的栈,队列,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Python+PyQt5开发一个Windows电脑启动项管理神器

    Python+PyQt5开发一个Windows电脑启动项管理神器

    这篇文章主要介绍了如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新启动项,支持拖拽操作,下面就跟随小编一起了解一下吧
    2025-05-05
  • anaconda升级sklearn版本的实现方法

    anaconda升级sklearn版本的实现方法

    这篇文章主要介绍了anaconda升级sklearn版本的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python变量教程之全局变量和局部变量

    Python变量教程之全局变量和局部变量

    这篇文章主要介绍了Python变量教程之全局变量和局部变量,文章围绕主题展开详细的晌午内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Django+simpleui实现文件上传预览功能(详细过程)

    Django+simpleui实现文件上传预览功能(详细过程)

    该文章详细介绍了如何在Django框架中实现文件上传、预览和下载功能,并使用SimpleUI美化Django后台界面,通过创建模型、表单、视图和配置URL,实现了文件的存储和管理,同时,文章还提到了配置媒体文件、创建模板以及在生产环境中的部署注意事项,感兴趣的朋友一起看看吧
    2025-02-02
  • 公众号接入chatGPT的详细教程 附Python源码

    公众号接入chatGPT的详细教程 附Python源码

    这篇文章主要介绍了公众号接入chatGPT教程附Python源码,这里需要大家准备一个域名,一台服务器和一个公众号,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • python中ASCII码和字符的转换方法

    python中ASCII码和字符的转换方法

    今天小编就为大家分享一篇python中ASCII码和字符的转换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python数据结构之图深度优先和广度优先实例详解

    python数据结构之图深度优先和广度优先实例详解

    这篇文章主要介绍了python数据结构之图深度优先和广度优先,较为详细的分析了深度优先和广度优先算法的概念与原理,并给出了完整实现算法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07

最新评论