由示例开始 import unittest class TestStringMethods(unittest.TestCase): def test_upper(self): self.assertEqual('foo'.upper(),'FOO') def test_isupper(self): self.assertEqualTure('FOO'.isupper()) self.assertFalse('Foo'.isupper()) def test_split(self): s = 'hello world' self.assertEqual(s.split(),['hello','world']) with self.assertEqualRaise(TypeError): s.slipt(2) if __name__ == '__main__': #unittest.main:为测试提供了入口。 unittest.main() #运行结果: ... ---------------------------------------------------------------------- Ran 3 tests in 0.064s OK 整体结构概览
unittest原名为PyUnit,是由java的JUnit衍生而来。对于单元测试,需要设置预先条件,对比预期结果和实际结果。
整体结构:
unittest库提供了test cases, test suites, test fixtures,test runner:
test case :通过继承TestCase类,我们可以创建一个test,或者一组tests,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。
test suites : 测试套件,多个测试用例集合在一起,TestSuite也可以嵌套TestSuite。
test fixtures : setup + test case + teardown结构
TestLoader:用来加载TestCase到TestSuite中,其中的方法从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,返回一个TestSuite实例。
test runner:执行测试用例,其中的run()会执行TestSuite/TestCase。
TextTestResult:测试的结果会保存到TextTestResult实例中,包括运行用例数,成功数,失败数等。