Python 单元测试

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)

相关推荐