前言
pytest这个框架提供了非常多的钩子。通过这些钩子我们可以对pytest 用例收集、用例执行、报告输出等各个阶段进行干预,根据需求去开发对应的插件,以满足自己的使用场景。
01 什么是钩子函数?
钩子函数在pytest称之为Hook函数,它pytest框架的开发者,为了让用户更好的去扩展开发预留的一些函数。而预留的这些函数,在整个测试执行的生命周期中特定的阶段会自动去调用执行。如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YIc6C2GC-1689820507301)(/api/attachments/426316)]
pytest中的钩子函数按功能一共分为6类:引导钩子,初始化钩子、用例收集钩子、用例执行钩子、报告钩子、调试钩子。
详细文档可以查看pytest官方文档https://docs.pytest.org/en/latest/reference/reference.html?highlight=hook#hooks
02 报告钩子
2.1 pytest_report_header
该钩子函数返回要显示为终端报告的标题信息的字符串或字符串列表。
参数:
- config: pytest 配置对象。
- start_path: 执行的起始路径。
- startdir: 执行的起始路径(7.0版本后弃用了)。
返回值:
- 字符串或者 包含多个字符串的列表。
2.2 pytest_report_collectionfinish
返回用例收集完成后要显示的字符串或字符串列表 , 返回的这些字符串将显示在标准的“收集的 X 用例”消息之后。
参数:
- config: pytest 配置对象。
- start_path: 执行的起始路径。
- startdir: 执行的起始路径(7.0版本后弃用了)。
- items: 待执行的用例列表。
返回值:
- 字符串或者 包含多个字符串的列表。
2.3 pytest_report_teststatus
该钩子函数 返回状态报告的结果类别、短字母和详细字词。
- 结果类别 : 是计算结果的类别,例如“通过”、“跳过”、“错误”或空字符串。
- 短字母 : 例如 “.”、“s”、“E”或空字符串。
- 详细字词: 例如“PASSED”、“SKIPPED”、“ERROR”或空字符串。
参数:
- config : pytest 配置对象。
- report :要返回其状态的报告对象。
返回值:
- 返回的是一个包含结果信息的元组,具体结构Demo: (“通过”, “P”, (“Pass”, {“res”: ‘执行通过啦’}) )。
在该钩子函数的内部,可以判断传入进来的report对象的信息,返回对应的结果。
2.4 pytest_report_to_serializable
将给定的报告对象进行序列化,例如:序列化为 JSON 格式的数据。
参数:
- config : pytest 配置对象。
- report :要返回其状态的报告对象。
返回值:
- 任何类型都可以。
2.5 pytest_report_from_serializable
将序列化后的报告数据,还原为报告对象。
参数:
- config : pytest 配置对象。
- report :要返回其状态的报告对象。
返回值:
- 任何类型都可以。
2.6 pytest_terminal_summary
在终端摘要报告中添加一个部分。
参数
- terminalreporter: – 内部终端报告对象。
- exitstatus: – 将报告回操作系统的退出状态。
- config: – pytest 配置对象。
2.7 pytest_fixture_setup
执行前置测试夹具的钩子函数。
参数
- fixturedef
- request
返回值:
- 测试夹具函数的返回值。
2.8 pytest_fixture_post_finalizer
在执行完后置夹具之后,清除缓存之前调用。
参数:
- fixturedef
- request
返回值:
- 测试夹具函数的返回值。
2.9 pytest_warning_recorded
捕获pytest执行用例时出现的warning警告的钩子函数。
参数:
- warning_message:捕获的警告。
- when
“config”:在 pytest 配置/初始化阶段。
“collect”: 在测试收集期间。
“runtest”: 在测试执行期间。 - nodeid: 测试用例的ID
- location: 保存有关捕获的警告的执行上下文的信息(文件名、行号、函数)。function当执行上下文处于模块级别时,计算结果为 。
2.10 pytest_runtest_logreport
处理项目的TestReport每个设置、调用和拆卸运行测试阶段的生成。
参数:
- report: 用例执行的结果信息。
2.11 pytest_assertrepr_compare
断言失败时执行的钩子函数, 返回用例断言失败,表达式中比较内容的解释。
参数:
- config:pytest执行的配置对象。
- op:断言的比较运算符。
- left : 预期结果(比较运算符左边的内容)。
- right : 实际结果(比较运算符右边的内容)。
返回值:
- 对断言结果的描述(字符串或列表类型)。
2.12 pytest_assertion_pass
断言通过时执行的钩子函数。
参数:
- item :执行的测试用例。
- lineno: – 断言语句的行号。
- orig :-- 带有原始断言的字符串。
- expl : – 带有断言解释的字符串。