前言
最近一直再更新pytest钩子函数相关的文章,pytest有很多钩子函数,之前已经讲解过一些钩子函数了,这里篇文章主要是一个类似目录的作用,可以直达想要了解的钩子函数。
引导挂钩
引导挂钩调用了足够早注册的插件。
- pytest_load_initial_conftests 调用以在命令行选项解析之前实现初始conftest文件的加载
- pytest_cmdline_parse 返回初始化的配置对象,解析指定的参数。
- pytest_cmdline_main 调用以执行主命令行操作。默认实现将调用configure hooks和runtestu mainloop。
初始化挂钩
初始化钩子需要插件和conftest.py文件
- pytest_addoption 注册argparse样式的选项和ini样式的配置值,这些值在测试运行开始时被调用一次。
- pytest_addhooks 在插件注册时调用,以允许通过调用
pluginmanager.add_hookspecs(module_or_class, prefix)
. - pytest_configure 允许插件和conftest文件执行初始配置。
- pytest_unconfigure 在退出测试进程之前调用。
- pytest_sessionstart 在
Session
对象已创建,在执行收集和进入运行测试循环之前。 - pytest_sessionfinish 在整个测试运行完成后,在将退出状态返回到系统之前调用。
- pytest_plugin_registered 注册了一个新的pytest插件
收集挂钩
pytest
调用以下挂钩以收集文件和目录
- pytest_collection 为给定会话执行收集阶段。
- pytest_ignore_collect 正在考虑返回True以阻止此集合。
- pytest_collect_file 为给定路径创建一个收集器,如果不相关,则不创建收集器
- pytest_pycollect_makemodule 返回给定路径的模块收集器或无。
- pytest_pycollect_makeitem 返回模块中Python对象的自定义项/收集器,或者返回None。
- pytest_generate_tests 生成对测试函数的(多个)参数化调用
- pytest_make_parametrize_id 返回val 将由@ pytest.mark.parametrize调用使用的给定用户友好的字符串表示形式,如果挂钩不知道,则返回None val。
- pytest_collection_modifyitems 在执行收集后调用。可以过滤或重新排序。。
- pytest_collection_finish 在执行和修改收集后调用。
测试运行(runtest)挂钩
- pytest_runtestloop 执行主运行测试循环(收集完成后)。
- pytest_runtest_protocol 对单个测试项执行runtest协议。
- pytest_runtest_logstart 在为单个项运行runtest协议开始时调用。
- pytest_runtest_logfinish 在运行单个项的runtest协议结束时调用。
- pytest_runtest_setup 调用以执行测试项的设置阶段。
- pytest_runtest_call 调用以运行测试项的测试(调用阶段)。
- pytest_runtest_teardown 调用以执行测试项的拆卸阶段。
- pytest_runtest_makereport 调用以创建
_pytest.reports.TestReport
对于测试项的每个安装、调用和拆卸runtest阶段。 - pytest_pyfunc_call 调用底层测试函数。
报告挂钩
- pytest_collectstart 收集器开始收集。
- pytest_make_collect_report 执行collector.collect()并返回一个CollectReport。
- pytest_itemcollected 我们刚刚收集了一个测试项目。
- pytest_collectreport 收集器完成收集。
- pytest_deselected 调用取消选择的测试项,例如按关键字。
- pytest_report_header 返回要显示为终端报告标题信息的字符串或字符串列表。
- pytest_report_collectionfinish 返回要在成功完成收集后显示的字符串或字符串列表。
- pytest_report_teststatus 返回结果类别,简写形式和详细词以进行状态报告。
- pytest_terminal_summary 在终端摘要报告中添加一节。
- pytest_fixture_setup 执行夹具设置执行。
- pytest_fixture_post_finalizer 在fixture teardown之后,但在清除缓存之前调用,因此fixture结果
fixturedef.cached_result
仍然可用(不可用None
) - pytest_warning_recorded 处理内部pytest warnings插件捕获的警告
- pytest_runtest_logreport 处理
_pytest.reports.TestReport
为项目的每个安装、调用和拆卸运行测试阶段生成。 - pytest_assertrepr_compare 返回失败断言表达式中比较的说明。
- pytest_assertion_pass(实验性的)在断言通过时调用。
调试/交互挂钩
很少有可以用于特殊报告或与异常交互的挂钩:
- pytest_internalerror 要求内部错误。返回True以禁止对将INTERNALERROR消息直接打印到sys.stderr的回退处理。
- pytest_keyboard_interrupt 要求键盘中断。
- pytest_exception_interact 当引发可交互处理的异常时调用。
- pytest_enter_pdb 调用了pdb.set_trace()。
最后
这篇文章后续会不断更新,已经讲解过的钩子函数会增加链接。好多钩子函数,一个个攻克吧。