unittest是Python的内置模块,这意味着我们不需要再进行安装。unittest支持自动化测试、测试用例间共享setUp(测试前的初始化工作)和tearDown
unittest是Python的内置模块,这意味着我们不需要再进行安装。unittest支持自动化测试、测试用例间共享setUp(测试前的初始化工作)和tearDown(测试结束后的清理工作)代码块,可以将测试用例合并为集合执行,然后将测试结果展示在报告中。
unittest框架的4个重要概念
- 测试固件test fixture:对于测试固件,我们可以将其理解为在测试之前或者之后需要做的一些操作。例如测试执行前,可能需要打开浏览器、创建数据库连接等;测试结束后,可能需要清理测试环境、关闭数据库连接等。unittest中常用的test fixture有setUp、tearDown、setUpClass、tearDownClass。前面两个是在每个用例执行之前或之后执行,后面两个是在类执行之前或之后执行。
- 测试用例test case:测试用例是在unittest中执行测试的最小单元。它通过unittest提供的assert方法来验证一组特定的操作或输入以后得到的具体响应。unittest提供了一个名为TestCase的基础类,可以用来创建测试用例。unittest中测试用例的方法必须以test开头,并且执行顺序依照的是方法名的ASCII值排序。
- 测试套件test suite:测试套件就是一组测试用例,作用是将多个测试用例放到一起,执行一个测试套件就可以将这些测试用例全部执行。
- 测试运行器test runner:测试运行器用来执行测试用例,并返回测试用例执行的结果。它还可以用图形、表格、文本等方式把测试结果形象地展现出来,如HTMLTestRunner。
unittest用例示例
下面通过代码来看一下unittest用例的基本样式:
import unittestclass MyTestClass(unittest.TestCase):
def setUp(self):
print('setUp')
def test_first(self):
self.assertEqual('hy592070616', 'hy592070616')
def tearDown(self):
print('tearDown')
if __name__ == '__main__':
unittest.main()
执行后输出如下:
setUptearDown
Ran 1 test in 0.000s
OK
Process finished with exit code 0
其中,输出的OK代表断言成功,setUp和tearDown为程序执行的输出信息。