CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
单元测试
unittest
unittest用例编写——TestCase
- 用例文件创建
- 用例类定义
- 用例方法定义
# setUpClass是类级别的,它们会在所有测试用例执行前执行一次,并且只执行一次。
# tearDownClass方法是类级别的,它们会在所有测试用例执行后执行一次,并且只执行一次。
import unittest
class TestDemo(unittest.TestCase):
def test_case1(self):
print("这是测试用例")
def test_case2(self):
print("test case 2")
def setUp(self):
print("----用例执行的前置方法---setUp")
def tearDown(self):
print("----用例级别的后置方法---tearDown")
# 类方法区别与实例方法需要@声明且参数是cls
@classmethod
def setUpClass(cls):
print("----测试类级别的前置方法---")
@classmethod
def tearDownClass(cls):
print("----测试类级别的后置方法---")
if __name__ == '__main__':
unittest.main()
unittest用例收集——TestSuite
- 测试套件
- 用例加载器
- 加载用例的方式
import unittest
# 创建一个测试套件
suite = unittest.TestSuite()
# 创建一个用例加载器
loader = unittest.TestLoader()
# 将用例加载到测试套件中
# 通过类名进行加载
suite.addTest(loader.loadTestsFromTestCase(TestDemo))
# 通过用例模块进行加载
suite.addTest(loader.loadTestsFromModule(test_demo))
# 通过用例文件所在路径进行加载
suite.addTest(loader.discover('./', pattern='test*.py'))
# 获取套件中的用例数量
print('套件中的用例数量:',suite.countTestCases())
unittest用例执行——TestRunner
# 用例运行
import unittest
# 创建一个测试套件
suite = unittest.TestSuite()
# 创建一个用例加载器
loader = unittest.TestLoader()
# 通过文件所在路径进行加载用例
suite.addTest(loader.discover('./', pattern='test*.py'))
# 获取套件中的用例数量
print('套件中的用例数量:',suite.countTestCases())
# 运行用例,记住TestRunner不能直接运行,unittest自身只能实现txt的报告
with open('./report.txt', 'w', encoding='utf-8') as f:
runner = unittest.TextTestRunner(stream=f,verbosity=2)
runner.run(suite)
unittest用例加载&执行扩展
import unittest
# 加载测试用例到测试套件中
suite = unittest.defaultTestLoader.discover(start_dir='./',pattern='test*.py')
# 获取套件中的用例数量
print('套件中的用例数量:',suite.countTestCases())
# 运行用例
with open('./report.txt', 'w', encoding='utf-8') as f:
runner = unittest.TextTestRunner(stream=f,verbosity=2)
runner.run(suite)