测试与调试专项测试
考察知识点
- unittest模块:TestCase类、断言方法、测试套件
- pytest框架:pytest语法、fixture、参数化测试
- 调试技巧:pdb调试器、断点设置、变量检查
- 日志记录:logging模块、日志级别、日志配置
unittest是Python内置的单元测试框架,测试类继承unittest.TestCase,测试方法以test开头,使用assertEqual等断言方法验证结果。
coverage是Python的代码覆盖率分析工具,可以统计测试过程中执行的代码行数比例,帮助发现未被测试覆盖的代码路径。
Python的assert语句用于调试时检查条件,如果条件为False则抛出AssertionError异常,可用于测试代码验证预期结果。
生产环境日志最佳实践包括:使用合适的日志级别、结构化日志格式、避免记录敏感信息、配置日志轮转防止文件过大、集中存储便于分析。
pytest是Python流行的第三方测试框架,语法简洁,测试函数无需继承类,直接使用普通assert语句即可,支持参数化测试和丰富的插件生态。
Python的logging模块提供了灵活的日志记录功能,支持多种日志级别(DEBUG、INFO、WARNING、ERROR、CRITICAL)和多种输出方式(文件、控制台、网络等)。
cProfile模块用于分析Python程序的性能,统计各函数的调用次数和执行时间;timeit模块用于精确测量小段代码的执行时间。
unittest测试类中,以下哪个方法会被自动执行为测试?
cProfile分析结果中的"cumtime"表示:
RotatingFileHandler的作用是:
pytest相比unittest的主要优势是:
执行assert 5 > 10会发生什么?
设置日志级别为INFO后,以下哪个日志消息不会被输出?
使用coverage分析pytest测试覆盖率,正确的命令顺序是:
cProfile.run('____________()')分析函数性能。ncalls表示____________,tottime表示函数____________执行时间,cumtime表示累计时间(含子调用)。timeit.timeit('code', number=n)测量代码n次的执行总时间。
RotatingFileHandler按____________轮转日志,参数____________设置最大大小,____________设置保留备份数。TimedRotatingFileHandler按时间轮转,when='midnight'每天午夜轮转。避免记录敏感信息。使用结构化格式便于分析。
unittest测试类继承____________,测试方法以____________开头。self.____________(a, b)断言相等,self.assertTrue(x)断言为真,self.assertIn(a, b)断言包含,self.assertRaises(exc)断言抛出异常。运行测试用unittest.main()。
pytest测试函数以____________开头,直接使用____________语句断言。运行测试用____________命令。参数化测试用parametrize装饰器。fixture用@pytest.fixture定义。pytest需要pip安装,语法比unittest更简洁。
logging有5个级别:____________(调试)、____________(一般)、____________(警告)、ERROR(错误)、CRITICAL(严重)。basicConfig设置level参数指定最低输出级别,filename参数指定输出文件,format参数指定日志格式。
assert语句检查条件,条件为____________时抛出____________异常。pytest直接使用____________断言。unittest使用self.assertEqual()断言相等,self.assertTrue()断言为真,self.assertRaises()断言抛出异常。python -O选项可禁用assert。