1、setUp()&tearDown():在每个测试方法(用例)运行时被调用一次
setUp()主要实现测试前的初始化工作,而tearDown()则主要实现测试完成后的垃圾回收等工作 。
代码:
#coding=utf-8
import unittest
class TestUM1(unittest.TestCase):#用例执行初始化
def setUp(self):
print("setUp start=========>")#测试完成后的清理环境
def tearDown(self):
print("==== END ! ====")
# =====测试用例========
def test_numbers(self):
print('1test_numbers')
def test_strings(self):
print('2test_strings')
if __name__ == '__main__':
unittest.main()
执行结果:
- setUp start=========>
- 1test_numbers
- ==== END ! ====
- setUp start=========>
- 2test_strings
- ==== END ! ====
2、setUpClass()&tearDownClass():
全程只调用一次
setUp()/tearDown(),必须使用@classmethod 装饰器
代码:
#coding=utf-8
import unittest
# 功能函数
def multiply(a,b):
return a * bclass
TestUM1(unittest.TestCase):##全程只调用一次 setUp/tearDown,
@classmethod
def setUpClass(cls):
print("Test Class Start ----->")
@classmethod
def tearDownClass(cls):
print("Test Class End ----->")
# =====测试用例========
def test_numbers(self):
print('1test_numbers')
assert multiply(5,6) == 30
def test_strings(self):
print('2test_strings')
assert multiply('b',2) == 'bb'
if __name__ == '__main__':
unittest.main()
运行结果:
- Test Class Start ----->
- 1test_numbers
- 2test_strings
- Test Class End ----->
3、setUpModule()&tearDownModule()
模块只指的是作用于一个文件,整个文件级别上只调用一次 setUp/tearDown
代码:
#coding=utf-8
import unittest
# 功能函数
def multiply(a,b):
return a * b
def setUpModule():
print('集成测试 >>>>>>>>>>>>>>开始')
def tearDownModule():
print("集成测试 >>>>>>>>>>>>>>结束")
class TestUM1(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("Test Class Start ----->")
@classmethod
def tearDownClass(cls):
print("Test Class End ----->")
def setUp(self):
print("setUp start=========>")
def tearDown(self):
print("==== END ! ====")
=====测试用例========
def test_numbers(self):
print('1test_numbers')
self.assertEqual(multiply(5,6),30)
def test_strings(self):
print('2test_strings')
assert multiply('b',2) == 'bb'
class TestUM2(unittest.TestCase):
def test_3(self):
print('3test_3')
if __name__ == '__main__':
unittest.main()
import unittest
# 功能函数
def multiply(a,b):
return a * b
def setUpModule():
print('集成测试 >>>>>>>>>>>>>>开始')
def tearDownModule():
print("集成测试 >>>>>>>>>>>>>>结束")
class TestUM1(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("Test Class Start ----->")
@classmethod
def tearDownClass(cls):
print("Test Class End ----->")
def setUp(self):
print("setUp start=========>")
def tearDown(self):
print("==== END ! ====")
=====测试用例========
def test_numbers(self):
print('1test_numbers')
self.assertEqual(multiply(5,6),30)
def test_strings(self):
print('2test_strings')
assert multiply('b',2) == 'bb'
class TestUM2(unittest.TestCase):
def test_3(self):
print('3test_3')
if __name__ == '__main__':
unittest.main()
运行结果:
- 集成测试 >>>>>>>>>>>>>>开始
- setUp start=========>
- 1test_numbers
- ==== END ! ====
- setUp start=========>
- 2test_strings
- ==== END ! ====
- 集成测试 >>>>>>>>>>>>>>结束
4、setUp()&tearDown()、setUpClass()&tearDownClass()、setUpModule()&tearDownModule()同时使用
三个模块的逻辑关系:
setUp()&tearDown() < setUpClass()&tearDownClass() < setUpModule()&tearDownModule()
代码:
#coding=utf-8
import unittest
# 功能函数
def multiply(a,b):
return a * b
def setUpModule():
print('集成测试 >>>>>>>>>>>>>>开始')
def tearDownModule():
print("集成测试 >>>>>>>>>>>>>>结束")
class TestUM1(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("Test Class Start ----->")
@classmethod
def tearDownClass(cls):
print("Test Class End ----->")
def setUp(self):
print("setUp start=========>")
def tearDown(self):
print("==== END ! ====")
#=====测试用例========
def test_numbers(self):
print('1test_numbers')
self.assertEqual(multiply(5,6),30)
def test_strings(self):
print('2test_strings')
assert multiply('b',2) == 'bb'
class TestUM2(unittest.TestCase):
def test_3(self):
print('3test_3')
if __name__ == '__main__':
unittest.main()
执行结果:
- 集成测试 >>>>>>>>>>>>>>开始
- Test Class Start ----->
- setUp start=========>
- 1test_numbers
- ==== END ! ====
- setUp start=========>
- 2test_strings
- ==== END ! ====
- Test Class End ----->
- 3test_3
- 集成测试 >>>>>>>>>>>>>>结束