【Python】unittest - 单元测试框架

 

目录

一. 介绍

二. 说明

2.1 命令行模式

三. 实例

四. 参考


 

一. 介绍

Python单元测试框架,有时称为“PyUnit”,是由kentbeck 和erichgamma 编写的JUnit的Python语言版本。JUnit是Kent的Smalltalk测试框架的Java版本。每一个都是其各自语言的事实上的标准单元测试框架。

unittest 支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中,以及测试独立于报告框架。unittest 模块提供的类使支持一组测试的这些质量变得容易。

unittest 单元测试框架是受到 JUnit 的启发,与其他语言中的主流单元测试框架有着相似的风格。其支持测试自动化,配置共享和关机代码测试。支持将测试样例聚合到测试集中,并将测试与报告框架独立。

二. 说明

为了实现这些,unittest 通过面向对象的方式支持了一些重要的概念。

测试脚手架

test fixture 表示为了开展一项或多项测试所需要进行的准备工作,以及所有相关的清理操作。举个例子,这可能包含创建临时或代理的数据库、目录,再或者启动一个服务器进程。

测试用例

一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。 unittest 提供一个基类: TestCase ,用于新建测试用例。

测试套件

test suite 是一系列的测试用例,或测试套件,或两者皆有。它用于归档需要一起执行的测试。

测试运行器(test runner)

test runner 是一个用于执行和输出测试结果的组件。这个运行器可能使用图形接口、文本接口,或返回一个特定的值表示运行测试的结果。

 

通过 setUp() 和 tearDown() 方法,可以设置测试开始前与完成后需要执行的指令。 

 

 unittest.main() 提供了一个测试脚本的命令行接口。

 

其实还有其他方法可以以更精细的控制级别、更少的简洁输出以及不需要从命令行运行来运行测试,此处暂时不讨论(实例中给出注释)。

 

2.1 命令行模式

unittest 模块可以通过命令行运行模块、类和独立测试方法的测试;

python -m unittest test_module               - run tests from test_module
python -m unittest module.TestClass          - run tests from module.TestClass
python -m unittest module.Class.test_method  - run specified test method

你可以传入模块名、类或方法名或他们的任意组合。

在运行测试时,你可以通过添加 -v 参数获取更详细(更多的冗余)的信息。

python -m unittest -v test_module

用于获取命令行选项列表:

python -m unittest -h

在 2.7 版更改: 在早期版本中,只支持运行独立的测试方法,而不支持模块和类。

 

三. 实例

# -*- coding:utf-8 -*-

import unittest


class Test_Constant(unittest.TestCase):
    '''the test constant'''
    @classmethod
    def setUpClass(cls):
        print("...the set up...")

    def test_constant(self):
        self.assertEqual("1", "1", "the test fail.")

    @classmethod
    def tearDownClass(cls):
        print
        print("...the tear down...")


if __name__ == '__main__':
    # suite = unittest.TestLoader().loadTestsFromTestCase(Test_Constant)
    # unittest.TextTestRunner(verbosity=2).run(suite)
    unittest.main()

 

以上例子演示了 unittest 中最常用的、足够满足许多日常测试需求的特性。

 

四. 参考

  1. https://docs.python.org/zh-cn/2.7/library/development.html
  2. https://docs.python.org/zh-cn/2.7/library/unittest.html
  3. https://docs.python.org/zh-cn/3/library/unittest.html
  4. https://code.visualstudio.com/docs/python/testing
  5. https://github.com/microsoft/vscode/issues/103303
  6. https://stackoverflow.com/questions/15514593/importerror-no-module-named-when-trying-to-run-python-script
  7. https://stackoverflow.com/questions/8321130/python-module-import-issues-in-command-prompt
  8. https://stackoverflow.com/questions/56254424/visual-studio-code-cannot-detect-my-tests

 

(完)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值