一.直接使用TestCase
import unittestclassTest1(unittest.TestCase):
@classmethod
def setUpClass(self):
print("execute setUpClass")
@classmethod
def tearDownClass(self):
print("execute tearDownClass")
def setUp(self):
print("execute setUp")
def tearDown(self):
print("execute tearDown")
def test_one(self):
print('execute test_one')
self.assertTrue('FOO'.isupper())
def test_two(self):
print('execute test_two')
execute setUpClass
execute setUp
execute test_one
execute tearDown
execute setUp
execute test_two
execute tearDown
execute tearDownClass
Ran2 tests in 0.003s
OK
二、使用TestSuite
直接写TestCase执行时是按字母排序的顺序执行的,如果要设定测试用例的执行先后顺序则需要将TestCase封装到TestSuite。
import unittest
classTest2(unittest.TestCase):
@classmethod
def setUpClass(self):
print("execute setUpClass")
@classmethod
def tearDownClass(self):
print("execute tearDownClass")
def setUp(self):
print("execute setUp")
def tearDown(self):
print("execute tearDown")
def test_one(self):
print('execute test_one')
self.assertTrue('FOO'.isupper())
def test_two(self):
print('execute test_two')if __name__ == '__main__':
suite=unittest.TestSuite()
# Test2是要测试的类名,test_two是要执行的测试方法
suite.addTest(Test2("test_two"))
suite.addTest(Test2("test_one"))
runner=unittest.TextTestRunner()
runner.run(suite)
execute setUpClass
execute setUp
execute test_one
execute tearDown
Ran2 tests in 0.007s
OK
execute setUp
execute test_two
execute tearDown
execute tearDownClass
unittest的setup、teardown会在每个用例执行前后执行一次,如上面测试用例类中有2个测试用例,那么每个用例执行前会执行setup,执行后会执行teardown,即setup、teardown总共会调用2次,但考虑实际自动化测试场景,多个用例只需执行一次setup,全部用例执行完成后,执行一次teardown,针对该种场景,unittest的处理方法是使用setupclass、teardownclass
unittest执行的三种方法:
利用python进行测试时,测试用例的加载方式有2种:
一种是通过unittest.main()来启动所需测试的测试模块;
一种是添加到testsuite集合中再加载所有的被测试对象,而testsuit里存放的就是所需测试的用例,下面分别列出3种方法的具体使用方式:
1、通过unittest.main()来执行测试用例的方式:
import unittestclassUCTestCase(unittest.TestCase):
def setUp(self):
#测试前需执行的操作
.....
def tearDown(self):
#测试用例执行完后所需执行的操作
.....
# 测试用例1
def testCreateFolder(self):
#具体的测试脚本
......
# 测试用例2
def testDeleteFolder(self):
#具体的测试脚本
......if __name__ == "__main__":
unittest.main()
2、通过testsuit来执行测试用例的方式:
import unittest
# 执行测试的类classUCTestCase(unittest.TestCase):
def setUp(self):
#测试前需执行的操作
.....
def tearDown(self):
#测试用例执行完后所需执行的操作
.....
# 测试用例1
def testCreateFolder(self):
#具体的测试脚本
......
# 测试用例2
def testDeleteFolder(self):
#具体的测试脚本
......if __name__ == "__main__":
# 构造测试集
suite=unittest.TestSuite()
suite.addTest(UC7TestCase("testCreateFolder"))
suite.addTest(UC7TestCase("testDeleteFolder"))
# 执行测试
runner=unittest.TextTestRunner()
runner.run(suite)
3、通过testLoader方式:
import unittestclassTestCase1(unittest.TestCase):
#def setUp(self):
#def tearDown(self):
def testCase1(self):
print'aaa'def testCase2(self):
print'bbb'
classTestCase2(unittest.TestCase):
#def setUp(self):
#def tearDown(self):
def testCase1(self):
print'aaa1'def testCase2(self):
print'bbb1'
if __name__ == "__main__":
#此用法可以同时测试多个类
suite1=unittest.TestLoader().loadTestsFromTestCase(TestCase1)
suite2=unittest.TestLoader().loadTestsFromTestCase(TestCase2)
suite=unittest.TestSuite([suite1, suite2])
unittest.TextTestRunner(verbosity=2).run(suite)