• Python unittest单元测试框架 TestSuite测试套件


    TestSuite 测试套件简介

    对一个功能的验证往往是需要很多多测试用例,可以把测试用例集合在一起执行,这就产生了测试套件TestSuite 的概念,它是用来组装单个测试用例,规定用例的执行的顺序,而且TestSuite也可以嵌套TestSuite。

    可以通过addTest() 加载TestCase 到TestSuite 中,再返回一个TestSuite 实例。

    示例:将simple_test 中的用例装载到测试套件中

    1. suite=unittest.TestSuite() # 创建测试套件
    2. suite.addTest(simple_test('test_add')) # 添加测试用例
    3. suite.addTest(simple_test('test_divide')) # 向套件中添加用例

    unittest.makeSuite根据文件批量创建测试套件,如果一个文件中有非常多测试用例,可以根据用例名称的相似性创建测试套件。

    unittest.makeSuite(testCaseClass, prefix)

    testCaseClass 为测试用例类的名称

    prefix 用例相似的部分名称

    示例:

    suite = unittest.makeSuite(simple_test, 'test')  # 创建并批量加载测试用例
    1. 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
    2. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
    3. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
    4. 分享他们的经验,还会分享很多直播讲座和技术沙龙
    5. 可以免费学习!划重点!开源的!!!
    6. qq群号:110685036【暗号:csdn999

    批量添加用例到测试套件

    unittest.TestLoader()根据目录批量创建测试套件,可以指定用例存放目录,根据文件名称匹配测试用例。

    注意:用例存放的子目录中必须具备__init__.py 文件,否则无法加载用例。

    unittest.TestLoader().discover(start_dir, pattern='test*.py', top_level_dir=None)

    start_dir 要测试的模块名或测试用例目录。

    pattern='test*.py' 表示用例文件名的匹配原则。星号“*”表示任意多个字符。

    top_level_dir=None 测试模块的顶层目录。None <=> 测试用例不是放在多级目录中

    示例:

    suites=unittest.defaultTestLoader.discover('./testDirectory', pattern='*_test.py')

    suites=unittest.TestLoader().discover('./testDirectory', pattern='*_test.py')

    创建测试套件后,执行测试用例使用unittest.TextTestRunner().run(TestSuite)

    示例:执行加载simple_test用例的测试套件

    1. runner = unittest.TextTestRunner()
    2. runner.run(suite) # 执行测试用例

    unittest.TestSuite() 的常用方法

    TestSuite.addTest 添加单个测试用例

    suite.addTest(simple_test('test_add')) 

    TestSuite.addTests通过序列添加测试用例

    suite.addTests([simple_test('test_add'),simple_test('test_divide')])

    TestSuite.countTestCases() 统计测试套件中的用例个数

    suite.countTestCases()

    测试套件灵活运用

    • 为测试用例文件添加suite 方法,方便加载测试套件

    示例:

    1. import unittest # 导入unittest 包
    2. from unittest_doc.com.Calculator.Calculator import calculator # 引入需要测试的包
    3. # 所有用例需继承TestCase类或者其子类
    4. class simple_test(unittest.TestCase):
    5. def setUp(self):
    6. print('@@@初始化test_simple@@@')
    7. self.a = calculator(1, 2)
    8. def test_add(self):
    9. print('---测试用例test_simple add---')
    10. self.assertEqual(self.a.minus(), -1, '两值不相等')
    11. self.assertEqual(self.a.add(), 3, '两值不相等')
    12. self.assertNotEqual(self.a.divide(), 1, '两值不相等')
    13. def test_divide(self):
    14. print('---测试用例test_simple divide---')
    15. self.assertEqual(self.a.divide(), 0.5)
    16. def tearDown(self):
    17. print('@@@结束test_simple@@@')
    18. def suite(): # 创建测试添加测试套件函数
    19. suite = unittest.TestSuite() # 建立测试套件
    20. suite.addTests([simple_test('test_add'), simple_test('test_divide')])
    21. return suite
    22. if __name__ == '__main__':
    23. runner = unittest.TextTestRunner(verbosity=2)
    24. runner.run(suite())

    如上示例:创建测试套件函数,使用时直接调用其函数,不用额外添加用例。

    • 嵌套测试套件,多个测试套件组合在一起
    1. suite1 = unittest.TheTestSuite()
    2. suite2 = unittest.TheTestSuite()
    3. alltests = unittest.TestSuite((suite1, suite2))

    END今天的分享就到此结束了,点赞关注不迷路~

  • 相关阅读:
    详解设计模式:简单工厂模式
    LuatOS-SOC接口文档(air780E)--lvgl - LVGL图像库
    【clickhouse】一个性能问题,把一个中间件从头到位翻了个遍
    Docker基础入门:Docker基础总结篇--超详细
    No Monotone Triples
    你能猜出这是什么代码吗
    Microsoft.IO.RecyclableMemoryStream源码解读
    荐书 | 为什么喜欢的女生这么难追?
    使用 C++ 进行CUDA编程教程
    C语言tips-字符串数组
  • 原文地址:https://blog.csdn.net/m0_47485438/article/details/134253744