首页 > 其他分享 >【pytest】Hook钩子函数完整API总结

【pytest】Hook钩子函数完整API总结

时间:2024-02-02 17:25:42浏览次数:23  
标签:调用 Item pytest runtest Hook API str config

  • pytest 的钩子函数有很多,通过钩子函数的学习可以了解到pytest在执行用例的每个阶段做什么事情,也方便后续对pytest二次开发学习。详细文档可以查看pytest官方文档https://docs.pytest.org/en/latest/reference.html#hooks
  • 钩子函数总结
    • 第一部分:setuptools 引导挂钩要求足够早注册的插件(内部和setuptools插件),可以使用的钩子

      • pytest_load_initial_conftests(early_config,parser,args): 在命令行选项解析之前实现初始conftest文件的加载。
      • pytest_cmdline_preparse(config,args): (不建议使用)在选项解析之前修改命令行参数。
      • pytest_cmdline_parse(pluginmanager,args): 返回一个初始化的配置对象,解析指定的args。
      • pytest_cmdline_main(config): 要求执行主命令行动作。默认实现将调用configure hooks和runtest_mainloop。
    • 第二部分: 初始化挂钩 ,初始化钩子需要插件和conftest.py文件

      • pytest_addoption(parser): 注册argparse样式的选项和ini样式的配置值,这些值在测试运行开始时被调用一次。
      • pytest_addhooks(pluginmanager): 在插件注册时调用,以允许通过调用来添加新的挂钩
      • pytest_configure(config): 许插件和conftest文件执行初始配置。
      • pytest_unconfigure(config): 在退出测试过程之前调用。
      • pytest_sessionstart(session): 在Session创建对象之后,执行收集并进入运行测试循环之前调用。
      • pytest_sessionfinish(session,exitstatus): 在整个测试运行完成后调用,就在将退出状态返回系统之前。
      • pytest_plugin_registered(plugin,manager):一个新的pytest插件已注册。
    • 第三部分: collection 收集钩子

      • pytest_collection(session): 执行给定会话的收集协议。
      • pytest_collect_directory(path, parent): 在遍历目录以获取集合文件之前调用。
      • pytest_collect_file(path, parent) 为给定的路径创建一个收集器,如果不相关,则创建“无”。
      • pytest_pycollect_makemodule(path: py._path.local.LocalPath, parent) 返回给定路径的模块收集器或无。
      • pytest_pycollect_makeitem(collector: PyCollector, name: str, obj: object) 返回模块中Python对象的自定义项目/收集器,或者返回None。在第一个非无结果处停止
      • pytest_generate_tests(metafunc: Metafunc) 生成(多个)对测试函数的参数化调用。
      • pytest_make_parametrize_id(config: Config, val: object, argname: str) 返回val 将由@ pytest.mark.parametrize调用使用的给定用户友好的字符串表示形式,如果挂钩不知道,则返回None val。
      • pytest_collection_modifyitems(session: Session, config: Config, items: List[Item]) 在执行收集后调用。可能会就地过滤或重新排序项目。
      • pytest_collection_finish(session: Session) 在执行并修改收集后调用。
    • 第四部分:测试运行(runtest)钩子

      • pytest_runtestloop(session: Session) 执行主运行测试循环(收集完成后)。
      • pytest_runtest_protocol(item: Item, nextitem: Optional[Item]) 对单个测试项目执行运行测试协议。
      • pytest_runtest_logstart(nodeid: str, location: Tuple[str, Optional[int], str]) 在运行单个项目的运行测试协议开始时调用。
      • pytest_runtest_logfinish(nodeid: str, location: Tuple[str, Optional[int], str])在为单个项目运行测试协议结束时调用。
      • pytest_runtest_setup(item: Item) 调用以执行测试项目的设置阶段。
      • pytest_runtest_call(item: Item) 调用以运行测试项目的测试(调用阶段)。
      • pytest_runtest_teardown(item: Item, nextitem: Optional[Item]) 调用以执行测试项目的拆卸阶段。
      • pytest_runtest_makereport(item: Item, call: CallInfo[None]) 被称为为_pytest.reports.TestReport测试项目的每个设置,调用和拆卸运行测试阶段创建一个。
      • pytest_pyfunc_call(pyfuncitem: Function) 调用基础测试功能。
    • 第五部分:Reporting 报告钩子

      • pytest_collectstart(collector: Collector) 收集器开始收集。
      • pytest_make_collect_report(collector: Collector) 执行collector.collect()并返回一个CollectReport。
      • pytest_itemcollected(item: Item) 我们刚刚收集了一个测试项目。
      • pytest_collectreport(report: CollectReport) 收集器完成收集。
      • pytest_deselected(items: Sequence[Item]) 要求取消选择的测试项目,例如按关键字。
      • pytest_report_header(config: Config, startdir: py._path.local.LocalPath) 返回要显示为标题信息的字符串或字符串列表,以进行终端报告。
      • pytest_report_collectionfinish(config: Config, startdir: py._path.local.LocalPath, items: Sequence[Item]) 返回成功完成收集后将显示的字符串或字符串列表。
      • pytest_report_teststatus(report: Union[CollectReport, TestReport], config: Config) 返回结果类别,简写形式和详细词以进行状态报告。
      • pytest_terminal_summary(terminalreporter: TerminalReporter, exitstatus: ExitCode, config: Config) 在终端摘要报告中添加一个部分。
      • pytest_fixture_setup(fixturedef: FixtureDef[Any], request: SubRequest) 执行夹具设置执行。
      • pytest_fixture_post_finalizer(fixturedef: FixtureDef[Any], request: SubRequest) 在夹具拆除之后但在清除缓存之前调用,因此夹具结果fixturedef.cached_result仍然可用(不是 None)
      • pytest_warning_captured(warning_message: warnings.WarningMessage, when: Literal[‘config’, ‘collect’, ‘runtest’], item: Optional[Item], location: Optional[Tuple[str, int, str]]) (已弃用)处理内部pytest警告插件捕获的警告。
      • pytest_warning_recorded(warning_message: warnings.WarningMessage, when: Literal[‘config’, ‘collect’, ‘runtest’], nodeid: str, location: Optional[Tuple[str, int, str]]) 处理内部pytest警告插件捕获的警告。
      • pytest_runtest_logreport(report: TestReport) 处理项目的_pytest.reports.TestReport每个设置,调用和拆卸运行测试阶段产生的结果。
      • pytest_assertrepr_compare(config: Config, op: str, left: object, right: object) 返回失败断言表达式中的比较的说明。
      • pytest_assertion_pass(item: Item, lineno: int, orig: str, expl: str) (实验性的)在断言通过时调用。
    • 第六部分:调试/相互作用钩,很少有可以用于特殊报告或与异常交互的挂钩:

      • pytest_internalerror(excrepr: ExceptionRepr, excinfo: ExceptionInfo[BaseException]) 要求内部错误。返回True以禁止对将INTERNALERROR消息直接打印到sys.stderr的回退处理。
      • pytest_keyboard_interrupt(excinfo: ExceptionInfo[Union[KeyboardInterrupt, Exit]]) 要求键盘中断。
      • pytest_exception_interact(node: Union[Item, Collector], call: CallInfo[Any], report: Union[CollectReport, TestReport]) 在引发可能可以交互处理的异常时调用。
      • pytest_enter_pdb(config: Config, pdb: pdb.Pdb) 调用了pdb.set_trace()。

 

 

原文链接:https://www.cnblogs.com/xwltest/p/16629201.html

标签:调用,Item,pytest,runtest,Hook,API,str,config
From: https://www.cnblogs.com/superbaby11/p/18003512

相关文章

  • 【pytest进阶】pytest之hook函数
    什么是hook函数比如说你写了一个框架类的程序,你希望这个框架可以“被其他的代码注入”,即别人可以加入代码对你这个框架进行定制化,该如何做比较好?一种很常见的方式就是约定一个规则,框架初始化时会收集满足这个规则的所有代码(文件),然后把这些代码加入到框架中来,在执行时一并执行......
  • 【自动化基础】pytest详解及进阶使用
    pytest介绍及基本使用【自动化测试框架】pytest和unitttest你知道多少?区别在哪?该用哪个?pytest原理参数化@pytest.mark.parametrize(argnames,argvalues,indirect=False,ids=None,scope=None))参数说明argnames必传,参数名,以逗号分隔的字符串,表示一个或多个......
  • 项目中如何保证API接口的幂等性?有哪些实现解决方法?有何利弊
    在实际开发项目中保证API接口的幂等性是十分重要的,因为在幂等性可以保证多次相同的操作不会对系统造成多次影响。首先来了解什么是接口API幂等性,简单来说就是对同一个接口的多次请求或操作造成的影响是相同的,就是说一个操作如果在其执行一次或者多次后产生的结果相同,这个操作就是......
  • OpenHarmony—开发及引用静态共享包(API 9)
    HAR(HarmonyArchive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。接下来,将简单介绍库模块的工程结构,如下图所示:相关字段的描述......
  • 介绍一个超好用的API管理工具:Apipost
    Apipost是一款集API调试、生成文档、Mock、测试于一体的协同工具。单个工具可以同时满足接口测试、生成/分享文档、Mock、流程测试等功能,还有超实用的多人多角色间实时协作的功能。将前端、后端、测试三种角色串联起来,从而实现工作流程无缝衔接、提高研发效率!Apipost的定位是:Pos......
  • 软件测试/测试开发/全日制|Pytest allure如何添加测试用例步骤
    前言在编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。在allure提供给我们的众多装饰器中,就有一个非常符合我们的需求,它就是allure.step(),它可以帮助我们在测试用......
  • pyqt报错、python报错:src/pyaudio/device_api.c:9:10: fatal error: portaudio.h: 没
    报错信息:-DNDEBUG-fwrapv-O2-Wall-fPIC-O2-isystem/home/devil/anaconda3/envs/91/include-fPIC-O2-isystem/home/devil/anaconda3/envs/91/include-fPIC-I/usr/local/include-I/usr/include-I/home/devil/anaconda3/envs/91/include/python3.10-csrc/pyaudio......
  • 钩子hook,回调函数callback
    摘自和参考如下资料:钩子(回调函数)与PyTorch-知乎(zhihu.com) 把钩子函数传递给触发函数,就可以在触发函数内调用钩子函数了。其实就是把函数指针或者函数名传给另一个函数。只不过一般不单独这么用,配合类一起用可能就稍微麻烦了点。classOneday():def__init__(se......
  • 零侵入!试试这款Api接口文档生成器!
    大家好,我是Java陈序员。作为一名合格的程序员,不仅代码要写好,而且文档要写好。虽然目前有成熟的框架可以快速生成接口文档,如大名鼎鼎的Swagger.但是Swagger需要编写大量的注解来辅助生成文档,侵入了业务代码。不符合高内聚、低耦合的编程规范!今天,给大家介绍一款零侵入的Api......
  • API管理协作工具:Apipost
    相信无论是前端,还是后端的测试和开发人员,都遇到过这样的困难。不同工具之间数据一致性非常困难、低效。多个系统之间数据不一致,导致协作低效、频繁出问题,开发测试人员痛苦不堪。API管理的难点在哪?开发人员在Swagger定义好文档后,接口调试的时候还需要去Postman再定义一遍。前端......