Python + selenium之unitest(2)
unittest单元测试框架中重要的概念:
1.Test Case
一个Test Case实例就是一个测试用例。在一个完整的测试流程中,包括测试前准备环境的搭建(setUp),实现测试过程的代码(run)以及测试后测试环境的还原(tearDown)。单元测试(unittest)本质就是:一个测试用例就是一个完整的测试单元,通过运行这个测试单元,可以对某个功能模块进行验证。
2.Test Suite
一个功能的验证往往需要多个测试用例,可以多个测试用例集合在一块执行,于是就产生了测试套件TestSuite的概念,Test Suite用来组装单个测试用例,可以通过addTest加载TestCase加到TestSuite中从而F返回一个TestSuite实例。
3.Test Runner
测试的执行也是单元测试中非常重要的一个概念。一般单元测试框架中都会提供丰富的执行策略和执行结果。在unittest单元测试框架中,通过TextTestRunner类提供的run()方法来执行test suite/test case .
test runner()可以使用图形界面,文本界面或者返回一个特殊的值等方式来表示测试执行的结果。
4.Test Fixture
对于一个测试用例环境的搭建和销毁,就是一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。比如在一个测试用例中需要访问数据库,那么就可以在setUp()中通过建立数据库连接来进行初始化,在tearDown()中清空数据库产生的数据,然后关闭连接。
注意:tearDown的过程很重要,要为下一个test case留下一个干净的环境。
1 from calculator import Count 2 import unittest 3 4 5 class TestCount (unittest.TestCase): 6 def setUp(self): 7 print("test start") 8 9 def test_add(self): 10 j = Count (2, 4) 11 self.assertEqual (j.add (), 6) 12 13 def test_add2(self): 14 i = Count (2,9) 15 self.assertEqual (i.add (), 11) 16 17 def tearDown(self): 18 print("test end") 19 20 21 if __name__ == '__main__': 22 # unittest.main () 23 suite = unittest.TestSuite() 24 suite.addTest(TestCount('test_add2')) 25 # suite.addTest (TestCount ('test_add')) 26 runner = unittest.TextTestRunner() 27 runner.run(suite)
从上可以看出:setUp和tearDown作用于测试用例的开始与结束。