Python Unittest
Unit test
python 有个模块叫做 unittes,是Junit的Python实现,一个常用的单元测试框架。
文件结构
我一般是把UnitTest目录和src目录平行放置。
下面是Python官方文档给出的例子:
import unittest
class TestStringMethods(unittest.TestCase):
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)
如果要运行unittest,只需要加上
if __name__ == '__main__':
unittest.main()
然后直接运行该脚本。
每个test case的名字都由test开头,个人习惯在test和下划线之间加上test case的序号。
- test01_condition1(self)
- test02_condition1(self)
- …
测试环境的搭建与还原
- setUp() — 用于测试环境的构建, 所有test case开始前执行
- tearDown() — 测试环境的还原, 所有test case结束后执行
跳过某test case
如果想跳过某test case暂不执行,可以在该method前加一个decorator
@unittest.skip("demonstrating skipping")
def test12_condition12(self):
self.assertEqual(1, 2)