python文档与测试工具

本文介绍了Python的测试相关内容。pydoc模块可方便查看、生成帮助文档;doctest模块能运行源文件说明文档中的测试用例并生成报告;unittest用于单元测试,强调测试驱动开发;TestSuite测试包可组织多个测试用例,还介绍了测试固件、跳过测试用例等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文档 pydoc模块

  • 文档编写
    • 在函数、类、方法定义后定义一个字符串即可
  • 文档查看
    • 使用 help() 函数和 doc 属性,在控制器中查看函数、类、方法的文档
  • pydoc模块
    • 方便地查看、生成帮助文档
    • python -m pydoc 模块名 在控制台中查看
    • pydoc查看文档组织方式
      • 文档说明 模块顶部注释
      • class部分 列出模块所包含的全部类
      • function 全部函数
      • data 列出模块所包含的全部成员变量
      • file 显示模块对应的源文件
  • pydoc命令
    • python -m pydoc -w 模块名 为指定的模块输出html文档
    • python3 -m pydoc -w 目录名 为指定目录生成 HTML 文档
    • python3 -m pydoc -p 端口号 指定端口号启动本地服务器来查看文档信息
    • python3 -m pydoc -b 通过打开浏览器来查看 Python 的所有模块的文档信息
    • python -m pydoc -k 被搜索模块的部分内容

文档 doctest 模块

  • 定义

    • 通过 doctest 模块运行 Python 源文件的说明文档中的测试用例,从而生成测试报告
  • testmod()

    • 会自动提取该模块的说明文档中的测试用例,并执行这些测试用例,最终生成测试报告
  • 测试报告内容

    • 源文件
    • 未通过用例
    • 期望输出的结果
    • 实际产生的输出
  • 作用

    • 文档测试工具(doctest)可以提取说明文档中的测试用例
    • doctest.testmod() 提取文档测试用例比进行测试
    • 文档测试用例书写在文档字符串内,以python交互模式书写>>>
  • 主代码示例

        if __name__=='__main__':
            # 导入文档测试模块,调用testmod(),进行文档测试
            import doctest
            doctest.testmod()
    

单元测试unittest

  • 本质
    • 通过给定参数来执行函数,然后判断函数的实际输出结果和期望输出结果是否一致
  • 测试驱动开发
    1. 先编写测试用例
    2. 编写,修改代码逻辑
    3. 运行用例,不通过则重复1-2,直到所有用例测试通过
  • 关键
    • 测试驱动开发强调结果导向
    • unittest.TestCase 内置了大量 assertXxx 方法来执行断言
      • 异常、错误、警告和日志进行断言判断
      • 完成某种特定检查的断言
      • TestCase 包含的针对特定类型的断言
        • assertEqual() 会根据参数类型自动应用 assertMultiLineEqual(a, b),assertTupleEqual(a, b)...
  • 单元测试类必须继承 unittest.TestCase
    • 测试方法应该没有返回值
    • 测试方法不应该有任何参数
    • 测试方法应以test 开头
  • 运行测试
    • unittest.main()
    • python -m unittest 测试文件
    • py -m unittest 自动查找并运行当前目录下的所有测试用例
  • 测试结果
    • .通过 F失败 E出错 S跳过

TestSuite测试包

  • 场景
    • 测试包可以嵌套测试包
    • 测试包(TestSuite)可以组织多个测试用例,间接组织装载测试类
    • 程序可以使用测试运行器(TestRunner)来运行该测试包所包含的所有测试用例
  • unittest 概念
    • unittest.TestLoader() 测试加载器
      • loader.loadTestsFromTestCase(test_class)
    • unittest.TestSuite() 测试包
      • suite.addTests(tests)
    • unittest.TextTestRunner() 测试运行器, 可指定测试报告输出
      • runner.run(whole_suite())
    • 测试用例类(TestCase的子类)
  • 测试固件Test Fixture
    • 代表执行一个或多个测试用例所需的准备工作,以及相关联的准备操作
    • 准备工作可能包括创建临时数据库、创建目录、开启服务器进程等
    • setUp() 方法用于初始化测试固件,而 tearDown() 方法用于销毁测试固件
      • 类似如php中的构造函数与析构函数
    • @classmethod 类级别固件方法
      • setUpClass(cls), tearDownClass(cls)
    • python -m unittest -v fixture_test.py
  • unittest跳过测试用例
    • 使用 skipXxx 装饰器来跳过测试用例
      • @unittest.skip(reason) 无条件跳过
      • @unittest.skipIf(condition, reason) 当 condition 为 True 时跳过
      • @unittest.skipUnless(condition, reason) 当 condition 为 False 时跳过
    • 使用TestCase 的 skipTest() 方法来跳过测试用例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值