unittest包含四个重要概念
- Test Case
 - Test Suit
 - Test Fixture
 -  Test Runner
Testcase
一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码 (run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。Test suite
多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。
Test runner:
是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。TestLoader
是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。Test fixture
 
Test Fixture代表执行一个或多个测试所需的环境准备,以及关联的清理动作。例如,创子建临时或代理数据库、目录或启动服务器进程。
拿setUp /tearDown来说:
那么可以在setUp() 中建立数据库连接以及进行一些初始化,在tearDown()中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的 TestCase留下一个干净的环境。关于fixture,还有一个专门的库函数叫做fixtures,功能更加强大。
Testcase实战
# 全正确的用例import unittest# 被测试的函数def add(a, b):return a + b# 1、必须创建一个测试类,而且,这个类必须继承 unittest.TestCaseclass MyTest(unittest.TestCase):# 2、测试方法(用例)要示必须以“test”开头def test_case(self):c = add(3, 5)self.assertEqual(c, 8)if __name__ == '__main__':unittest.main()

# 有错误的用例import unittestclass MyClass(unittest.TestCase):def setUp(self):print("====> start class")def tearDown(self):print("===> end class")def test_case(self):print("---->test case")self.assertEqual(3, 4)if __name__ == '__main__':unittest.main()

