Python unittest模块简介

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!

出处: https://andyyoung01.github.io/
http://andyyoung01.16mb.com/

unittest测试框架是Python的内置模块。它与其它语言的单元测试框架如JUnit类似。本文简单看一下此模块的使用。

unittest模块一般的使用流程如下:

  1. import unittest
  2. 定义一个继承自unittest.TestCase的测试用例类
  3. 定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
  4. 定义测试用例,名字以test开头。
  5. 一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
  6. 调用unittest.main()启动测试
  7. 如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。

下面看一个基本的实例:

test.py

import unittest

class TestStringMethods(unittest.TestCase):

 def setUp(self):
 pass
 
 def test_upper(self):
 self.assertEqual('foo'.upper(), 'FOO')

 def test_isupper(self):
 self.assertTrue('FOO'.isupper())
 self.assertFalse('Foo'.isupper())

 def test_split(self):
 s = 'hello world'
 self.assertEqual(s.split(), ['hello', 'world'])
 # check that s.split fails when the separator is not a string
 with self.assertRaises(TypeError):
 s.split(2)

 def tearDown(self):
 pass
 
if __name__ == '__main__':
 unittest.main()

使用python test.py运行该文件后,结果如下:

...
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK

如果在测试脚本后面加入-v参数,如python test.py -v,则会显示更详细的测试信息:

test_isupper (__main__.TestStringMethods) ... ok
test_split (__main__.TestStringMethods) ... ok
test_upper (__main__.TestStringMethods) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

如果在一个文件夹中有多个测试源文件,要运行所有的这些源文件,对于每个文件都运行一个命令是非常烦人的。这时候使用test discovery就非常方便了。假设所有的测试源代码文件都保存在tests文件夹中,则只要运行 python -m unittest discover tests
就可以将该文件夹中所有的测试文件都运行一遍。

与unittest相关的更详细的其它信息可以在Python的官方文档中找到。

稿源:Andy's Techblog (源链) | 来自的投递 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 后端存储 » Python unittest模块简介

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录