1、内置装饰器
1.1、使用背景及场景
1.1.1、在自动化测试过程中,可能会遇到某些测试用例不需要执行的情况,但是该用例又不能删除,需要跳过,不执行该用例,此时就需要unittest提供的装饰器功能;
1.1.2、应用场景:
1、无条件跳过;
2、满足条件跳过;
3、不满足条件跳过;
1.2、应用场景1:无条件跳过
1.2.1、装饰器:@unittest.skip('skip info'),无条件跳过
1.2.2、代码:
# 内置装饰器 @unittest.skip('skip info')
import unittest
"""
@unittest.skip('skip info'),无条件跳过
"""
class MyTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
def setUp(self):
print("初始化")
def tearDown(self):
print("数据清理")
@unittest.skip('skip info')
def test_1(self):
print("用例:1")
def test_2(self):
print("用例:2")
def test_3(self):
print("用例:3")
def test_4(self):
print("用例:4")
if __name__ == '__main__':
unittest.main()
1.2.3、执行结果(test_1为执行,跳过):
1.3、应用场景2:满足条件跳过
1.3.1、装饰器 @unittest.skipUnless(条件, 'info'),满足条件跳过
1.3.2、代码
# 内置装饰器 @unittest.skip('skip info')
import unittest
"""
@unittest.skipIf(条件, 'info'),满足条件跳过
"""
class MyTest(unittest.TestCase):
a = 4
@classmethod
def setUpClass(cls):
print("setUpClass")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
def setUp(self):
print("初始化")
def tearDown(self):
print("数据清理")
@unittest.skipIf(a>3, 'info')
def test_1(self):
print("用例:1")
def test_2(self):
print("用例:2")
def test_3(self):
print("用例:3")
def test_4(self):
print("用例:4")
if __name__ == '__main__':
unittest.main()
1.3.3、执行结果
1.4、应用场景3:不满足条件跳过
1.4.1、装饰器 @unittest.skipUnless(条件, 'info'),不满足条件跳过
1.4.2、代码
# 内置装饰器 @unittest.skip('skip info')
import unittest
"""
@unittest.skipUnless(条件, 'info'),不满足条件跳过
"""
class MyTest(unittest.TestCase):
a = 4
@classmethod
def setUpClass(cls):
print("setUpClass")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
def setUp(self):
print("初始化")
def tearDown(self):
print("数据清理")
@unittest.skipUnless(a>5, 'info')
def test_1(self):
print("用例:1")
def test_2(self):
print("用例:2")
def test_3(self):
print("用例:3")
def test_4(self):
print("用例:4")
if __name__ == '__main__':
unittest.main()
1.4.3、执行结果
2、命令行执行测试
2.1、执行整个测试目录里的测试文件
2.1.1、打开终端:
2.1.2、cd命令切到存放.py的测试文件目录里:
2.1.3、执行命令行: python3 -m unittest -v *.py
2.1.4、执行结果:(所有用例的执行结果都会打印)
2.2、执行目录里指定的测试文件
2.2.1、打开终端:
2.2.2、cd命令切到存放.py的测试文件目录里
2.2.3、执行命令行: python3 -m unittest -v 要执行的文件名:
例:python3 -m unittest -v file_1.py
2.2.4、执行结果:
3、执行指定文件里的指定测试集或某个测试用例
3.3.1、打开终端:
3.3.2、cd命令切到存放.py的测试文件目录里:
3.3.3、执行命令行:python3 -m unittest -v 文件名.类名.方法名
把类下的所有用例全部执行:python3 -m unittest -v 文件名.类名
例:执行文件file_1.py中的类Test_1里面的测试用例test_2
python3 -m unittest -v file_1.Test_1.test_2
3.3.4、执行结果: