UnitTest框架作用:
1、能够组织多个用例执行
2、提供丰富的断言方法
3、提供丰富的日志及测试结果
UnitTest核心要素:
1、TestCase(测试用例)
方法:新建类并继承TestCase
import unittest
# 在unittest中类不需要实例化
class Test01(unittest.TestCase):
# 方法必须是test开头的命名
def test001(self):
print('test001被执行')
def test002(self):
print('test002被执行')
# 调用main函数是为了其他地方调用Test01时,本方法不会执行多次
if __name__ == '__main__':
unittest.main()
2、TestSuite(测试套件,多条用例时)
方法:
2.1、实例化:suite = unittest.TestCase()
2.2、addTest:
方式一、suite.addTest(类名(指定的方法名称))
from aa import bb: #导入某路径下的类,为了获取所写用例
if __name__ == '__main__':
# 实例化
suite = unittest.TestSuite
# 调用 添加用例方法
suite.addTest(bb("bb01"))
suite.addTest(bb("bb02"))
runner = unittest.TextTestRunner()
runner.run(suite)
方式二、suite.addTest(unittest.makeSuite(类名)) #搜索Classname中test开头的方法并添加到测试套件中
from aa import bb: #导入某路径下的类,为了获取所写用例
if __name__ == '__main__':
# 实例化
suite = unittest.TestSuite
# 调用 添加用例方法
suite.addTest(unittest.makeSuite(bb))
#测试执行
runner = unittest.TextTestRunner(verbosity=2) # 实例化,runner为实例化名称
runner.run(suite) # suite为套件名称,可自己更改
注:verbosity 参数可以控制输出的错误报告的详细程度,默认是 1;如果设为 0,则不输出每一用例的执行结果;如果设为 2,则输出详细的执行结果
方式三*、通过unittest.defaultTestLoader.discover()自动搜索指定目录下的指定开头的.py文件,并将测试用例组装到测试套件
用法:
test_dir = './'
discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')
test_dir为指定目录,'./'为当前目录
pattern='test*.py' 为要查找的.py文件
运行:
runner = unittest.TextTestRunner()
runner.run()
3、TextTestRunner
# 实例化 runner = unittest.TextTestRunner()
# 调用 runner.run(测试套件)
2.3、Fixture(对一个测试用例环境的搭建与摧毁就是一个fixture)
def setUp(self): #不论放哪儿都被首先执行
def tearDown(self): #不论放哪儿都被最后执行
1、必须继承unittest.TestCase
2、如果一个类中有多个方法,则每个方法执行前都会执行setUp,结束时都会执行tearDown
# 举例
import unittest
class Test001(unittest.TestCase):
def test001(self):
print('test001被执行')
def setUp(self) -> None:
print('setUp被执行')
def tearDown(self) -> None:
print('tearDown被执行')
def test002(self):
print('test002被执行')
if __name__ == '__main__':
unittest.main()