1 unittest
单元测试
1.1 组成部分
TestCase: 测试用例,框架的组成部分,真正用来书写用例代码
TestSuite: 测试套件,管理组装多个TestCase
TestRunner: 测试执行,测试运行,执行TestSuite
TestLoader: 测试加载,对TestSuit的功能补充
Fixture: 测试夹具,书写在TestCase代码中,是一个代码结构,在每个方法执行前后都执行的内容
1.2 TestCase
import unittest
class TestDemo(unittest.TestCase):
"""测试类,继承TestCase
测试方法:必须以 test_ 开头
运行:鼠标放在相应的方法上可指定执行相应的方法,放在类上执行所有方法
"""
def test_print(self):
print("测试1")
def test_print2(self):
print("测试2")
1.3 TestSuite、TestRunner
import unittest
from learn_unitest.t1 import TestDemo
from learn_unitest.t2 import TestDemo2
# 使用套件对象添加用例方法
suite = unittest.TestSuite()
suite.addTest(TestDemo('test_print')) # 添加指定方法
# 添加类中所有方法: suite.addTest(unittest.makeSuite(类名))
suite.addTest(unittest.makeSuite(TestDemo2))
# 实例化运行对象
runner = unittest.TextTestRunner()
# 执行
runner.run(suite)
# 运行结果中的 "." 表示用例通过,F表示用例不通过,E用例代码有问题
1.4 TestLoader
import unittest
# 实例化加载对象并添加用例
# 发现TestCase: discover("用例所在的路径", "用例的代码文件名") ,可以使用通配符*
loader = unittest.TestLoader().discover("./", "t*.py")
# loader = unittest.defaultTestLoader.discover("./", "t*.py")
# 实例化运行对象
unittest.TextTestRunner().run(loader)
1.5 Fixture
# 每个方法执行之前 setUp , 方法执行之后 tearDown
# 每个测试用例类所有方法执行之前类方法 setUpClass,所有方法执行之后 tearDownClass
# 每个代码文件(模块)执行之前定义函数setup_module,执行之后 teardown_module
# 以上方法均无返回值
import unittest
def setup_module():
print("+++++模块执行之前+++++")
def teardown_module():
print("+++++模块执行之后+++++")
class TestFixture(unittest.TestCase):
def setUp(self):
print("每个方法执行之前")
def tearDown(self) -> None:
print("每个方法执行之后")
@classmethod
def setUpClass(cls):
print("类中方法执行之前")
@classmethod
def tearDownClass(cls) -> None:
print("类中方法执行之后")
def test_print(self):
print("测试方案1")
def