zoukankan      html  css  js  c++  java
  • Pytest官方教程-22-API参考-Hooks

    API参考-Hooks

    • 钩子(Hooks)
      • 引导钩子
      • 初始化Hook方法
      • 测试运行Hook方法
      • 收藏Hook方法
      • 报告Hook方法
      • 调试/交互Hook方法

    钩子(Hooks)

    教程:编写插件。
    引用可由conftest.py文件和插件实现的所有Hook方法。

    引导Hook方法 

    引导Hook方法要求尽早注册插件(内部和setuptools插件)。

    pytest_load_initial_conftestsearly_configparser,*args *)[来源]

    在命令行选项解析之前实现初始conftest文件的加载。
    注意
    不会为conftest.py文件调用此Hook方法,仅适用于setuptools插件。

    | 参数: |

    • early_config_pytest.config.Config) - pytest配置对象
    • argslist* [ [str](https://docs.python.org/3/library/stdtypes.html#str "(在Python v3.7中)") ]*) - 在命令行上传递的参数列表
    • 解析器_pytest.config.Parser) - 添加命令行选项
      |

    pytest_cmdline_preparseconfig,*args *)[来源]

    不推荐)在选项解析之前修改命令行参数。
    此钩子被认为已弃用,将在未来的pytest版本中删除。考虑pytest_load_initial_conftests()改用。
    注意
    不会为conftest.py文件调用此Hook方法,仅适用于setuptools插件。

    | 参数: |

    • config_pytest.config.Config) - pytest配置对象
    • argslist* [ [str](https://docs.python.org/3/library/stdtypes.html#str "(在Python v3.7中)") ]*) - 在命令行上传递的参数列表
      |

    pytest_cmdline_parsepluginmanager,*args *)[来源]

    返回初始化的配置对象,解析指定的args。
    首先停止非结果,请参见firstresult:首先停止非结果
    注意
    plugins当使用pytest.main执行进程内测试运行时,只会为传递给arg的插件类调用此挂接。

    | 参数: |

    • pluginmanager_pytest.config.PytestPluginManager) - pytest插件管理器
    • argslist* [ [str](https://docs.python.org/3/library/stdtypes.html#str "(在Python v3.7中)") ]*) - 在命令行上传递的参数列表
      |

    pytest_cmdline_main(*config *)[来源]

    要求执行主命令行动作。默认实现将调用configure hooks和runtest_mainloop。
    注意
    不会为conftest.py文件调用此Hook方法,仅适用于setuptools插件。
    首先停止非结果,请参见firstresult:首先停止非结果

    | 参数: | config_pytest.config.Config) - pytest配置对象 |

    初始化Hook方法 

    初始化Hook方法调用插件和conftest.py文件。

    pytest_addoption解析器)[来源]

    注册argparse-style选项和ini-style配置值,在测试运行开始时调用一次。
    注意
    conftest.py 由于pytest 在启动期间发现插件的方式,此函数应仅在位于测试根目录的插件或文件中 实现。

    | 参数: | 解析器_pytest.config.Parser) - 要添加命令行选项,请调用parser.addoption(...)。添加ini文件值调用parser.addini(...)。 |
    以后可以config分别通过对象访问选项 :

    • config.getoption(name) 检索命令行选项的值。
    • config.getini(name) 检索从ini样式文件中读取的值。
      配置对象通过.config 属性在许多内部对象上传递,或者可以作为pytestconfig夹具检索。
      注意
      这个钩子与之不相容hookwrapper=True

    pytest_addhooks(*pluginmanager *)[来源]

    在插件注册时调用,允许通过调用添加新的Hook方法 。pluginmanager.add_hookspecs(module_or_class, prefix)

    | 参数: | pluginmanager_pytest.config.PytestPluginManager) - pytest插件管理器 |
    注意
    这个钩子与之不相容hookwrapper=True

    pytest_configure(*config *)[来源]

    允许插件和conftest文件执行初始配置。
    在解析了命令行选项后,为每个插件和初始conftest文件调用此Hook方法。
    之后,在导入钩子时会调用其他conftest文件。
    注意
    这个钩子与之不相容hookwrapper=True

    | 参数: | config_pytest.config.Config) - pytest配置对象 |

    pytest_unconfigure(*config *)[来源]

    在退出测试过程之前调用。

    | 参数: | config_pytest.config.Config) - pytest配置对象 |

    pytest_sessionstart会话)[来源]

    Session创建对象之后以及执行收集和进入运行测试循环之前调用。

    | 参数: | session_pytest.main.Session) - pytest会话对象 |

    pytest_sessionfinishsession,*exitstatus *)[来源]

    在整个测试运行完成之后调用,在将退出状态返回到系统之前。

    | 参数: |

    • session_pytest.main.Session) - pytest会话对象
    • exitstatusint) - pytest将返回系统的状态
      |

    pytest_plugin_registered插件经理)[来源]

    一个新的pytest插件已注册。

    | 参数: |

    • 插件 - 插件模块或实例
    • manager_pytest.config.PytestPluginManager) - pytest插件管理器
      |
      注意
      这个钩子与之不相容hookwrapper=True

    测试运行Hook方法

    所有与runtest相关的钩子都会收到一个pytest.Item对象。

    pytest_runtestloop会话)[来源]

    要求执行主运行测试循环(收集完成后)。
    首先停止非结果,请参见firstresult:首先停止非结果

    | 参数: | session_pytest.main.Session) - pytest会话对象 |

    pytest_runtest_protocolitem,*nextitem *)[来源]

    为给定的测试项实现runtest_setup / call / teardown协议,包括捕获异常和调用报告Hook方法。

    | 参数: |

    • item - 为其执行运行测试协议的测试项目。
    • nextitem - 预定下一个测试项目(如果这是我朋友的结束,则为无)。这个论点被传递给了 pytest_runtest_teardown()
      |
      | 返回布尔值: |
      如果不应调用其他钩子实现,则为True。
      |
      首先停止非结果,请参见firstresult:首先停止非结果 

    pytest_runtest_logstartnodeid,*location *)[来源]

    发出运行单个测试项目的信号。
    之前 会调用此Hook方法pytest_runtest_setup()pytest_runtest_call()pytest_runtest_teardown()Hook方法。

    | 参数: |

    • nodeidstr) - 项目的完整ID
    • 位置 - 三倍(filename, linenum, testname)
      |

    pytest_runtest_logfinishnodeid,*location *)[来源]

    发出运行单个测试项目的完整信号。
    这个钩子将在之后 调用pytest_runtest_setup()pytest_runtest_call()pytest_runtest_teardown()Hook方法。

    | 参数: |

    • nodeidstr) - 项目的完整ID
    • 位置 - 三倍(filename, linenum, testname)

    pytest_runtest_setup项目)[来源]

    以前叫过pytest_runtest_call(item)

    pytest_runtest_call项目)[来源]

    叫做执行测试item

    pytest_runtest_teardownitem,*nextitem *)[来源]

    叫之后pytest_runtest_call

    | 参数: | nextitem - 计划下一个测试项目(如果没有安排其他测试项目,则为None)。这个参数可以用来执行精确的拆卸,即调用足够的终结器,以便nextitem只需要调用setup-functions。 |

    pytest_runtest_makereport项目电话)[来源]

    返回_pytest.runner.TestReport给定pytest.Item和 的对象_pytest.runner.CallInfo
    首先停止非结果,请参见firstresult:首先停止非结果

    为了更深入地理解,你可以查看这些钩子的默认实现,_pytest.runner也可能 与其_pytest.pdb进行交互_pytest.capture以及其输入/输出捕获,以便在发生测试失败时立即进入交互式调试。
    _pytest.terminal具体报告使用报告Hook方法,打印有关测试运行的信息。

    pytest_pyfunc_call(*pyfuncitem *)[来源]

    调用底层测试功能。
    首先停止非结果,请参见firstresult:首先停止非结果

    集合Hook方法 

    pytest 调用以下钩子来收集文件和目录:

    pytest_collection会话)[来源]

    执行给定会话的收集协议。
    首先停止非结果,请参见firstresult:首先停止非结果。

    | 参数: | session_pytest.main.Session) - pytest会话对象 |

    pytest_ignore_collect路径配置)[来源]

    返回True以防止考虑此收集路径。在调用更具体的钩子之前,会查询所有文件和目录的钩子。
    首先停止非结果,请参见firstresult:首先停止非结果

    | 参数: |

    • pathstr) - 要分析的路径
    • config_pytest.config.Config) - pytest配置对象
      |

    pytest_collect_directory路径父母)[来源]

    在遍历目录以获取集合文件之前调用。
    首先停止非结果,请参见firstresult:首先停止非结果

    | 参数: | pathstr) - 要分析的路径 |

    pytest_collect_file路径父母)[来源]

    返回集合给定路径的节点或无。任何新节点都需要将指定parent的父节点作为父节点。

    | 参数: | pathstr) - 要收集的路径 |

    pytest_pycollect_makemodule路径父母)[来源]

    返回给定路径的Module收集器或None。将为每个匹配的测试模块路径调用此Hook方法。如果要为不匹配的文件创建测试模块作为测试模块,则需要使用pytest_collect_fileHook方法。
    首先停止非结果,请参见firstresult:首先停止非结果

    要影响Python模块中的对象集合,可以使用以下钩子:

    pytest_pycollect_makeitem收藏家名字,*obj *)[来源]

    返回模块中python对象的自定义项/收集器,或者无。
    首先停止非结果,请参见firstresult:首先停止非结果

    pytest_generate_tests(*metafunc *)[来源]

    生成(多个)参数化调用到测试函数。

    pytest_make_parametrize_idconfigval,*argname *)[来源]

    返回val@ pytest.mark.parametrize调用将使用的给定的用户友好字符串表示形式。如果钩子不知道,则返回None valargname如果需要,参数名称可用。
    首先停止非结果,请参见firstresult:首先停止非结果

    | 参数: |

    • config_pytest.config.Config) - pytest配置对象
    • val - 参数化值
    • argnamestr) - pytest生成的自动参数名称

    收集完成后,你可以修改项目的顺序,删除或以其他方式修改测试项目:

    pytest_collection_modifyitems会话配置项目)[来源]

    在执行收集后调用,可以就地过滤或重新排序项目。

    | 参数: |

    • session_pytest.main.Session) - pytest会话对象
    • config_pytest.config.Config) - pytest配置对象
    • itemsList [_pytest.nodes.Item](https://docs.pytest.org/en/latest/reference.html#_pytest.nodes.Item "_pytest.nodes.Item") ]) - 项目对象列表
      |

    pytest_collection_finish会话)[来源]

    在执行和修改集合后调用。

    | 参数: | session_pytest.main.Session) - pytest会话对象 |

    报告Hook方法 

    与会话相关的报告Hook方法:

    pytest_collectstart收藏家)[来源]

    Collector开始收集。

    pytest_make_collect_report收藏家)[来源]

    执行collector.collect()并返回CollectReport。
    首先停止非结果,请参见firstresult:首先停止非结果

    pytest_itemcollected项目)[来源]

    我们刚收集了一个测试项目。

    pytest_collectreport报告)[来源]

    Collector完成收集。

    pytest_deselected项目)[来源]

    要求通过关键字取消选择的测试项目。

    pytest_report_headerconfig,*startdir *)[来源]

    返回一个字符串或字符串列表,以显示为终端报告的标题信息。

    | 参数: |

    • config_pytest.config.Config) - pytest配置对象
    • startdir - 带起始目录的py.path对象
      |
      注意
      conftest.py 由于pytest 在启动期间发现插件的方式,此函数应仅在位于测试根目录的插件或文件中 实现。

    pytest_report_collectionfinishconfigstartdir,*items *)[来源]

    版本3.2中的新功能。
    返回集合成功完成后要显示的字符串或字符串列表。
    此字符串将显示在标准的“收集的X项目”消息之后。

    | 参数: |

    • config_pytest.config.Config) - pytest配置对象
    • startdir - 带起始目录的py.path对象
    • items - 将要执行的pytest项列表; 此列表不应修改。
      |

    pytest_report_teststatus报告配置)[来源]

    返回结果类别,简短和冗长的报告单词。

    | 参数: | config_pytest.config.Config) - pytest配置对象 |
    首先停止非结果,请参见firstresult:首先停止非结果

    pytest_terminal_summaryterminalreporterexitstatus,*config *)[来源]

    在终端摘要报告中添加一个部分。

    | 参数: |

    • terminalreporter_pytest.terminal.TerminalReporter) - 内部终端报告对象
    • exitstatusint) - 将报告回操作系统的退出状态
    • config_pytest.config.Config) - pytest配置对象
      |
      新的4.2版:该config参数。

    pytest_fixture_setupfixturedef,*request *)[来源]

    执行夹具设置执行。

    | 返回: | 调用fixture函数的返回值 |
    首先停止非结果,请参见firstresult:首先停止非结果
    注意
    如果fixture函数返回None,则将根据firstresult的行为继续调用此钩子函数的其他实现:首先停止非None结果选项。

    pytest_fixture_post_finalizerfixturedef,*request *)[来源]

    在夹具拆卸后调用,但在清除缓存之前,fixturedef.cached_result仍然可以访问夹具结果缓存。

    pytest_warning_capturedwarning_messagewhen,*item *)[来源]

    处理内部pytest warnings插件捕获的警告。

    | 参数: |

    • warning_messagewarnings.WarningMessage) - 捕获的警告。这与生成的对象相同warnings.catch_warnings(),并且包含与参数相同的属性warnings.showwarning()
    • 什么时候str) -
      指示何时捕获警告。可能的值:
      • "config":在pytest配置/初始化阶段。
      • "collect":在测试收集期间。
      • "runtest":在测试执行期间。
    • itempytest.Item | None) -
      DEPRECATED:此参数与 以后版本不兼容pytest-xdist,并且将始终None在以后的版本中接收。
      正在执行的项目,如果when"runtest",否则None
      |

    这是报告测试执行的中心钩子:

    pytest_runtest_logreport报告)[来源]

    处理与执行测试的相应阶段有关的测试设置/调用/拆除报告。

    你还可以使用此Hook方法来自定义某些类型的断言表示:

    pytest_assertrepr_compareconfigopleft,*right *)[来源]

    返回失败的断言表达式中的比较解释。
    如果没有自定义说明,则返回None,否则返回字符串列表。该字符串将通过新行被加入,但任何换行符 字符串将被转义。请注意,除第一行外的所有行都将略微缩进,目的是将第一行作为摘要。

    | 参数: | config_pytest.config.Config) - pytest配置对象 |

    调试/交互Hook方法 

    很少有钩子可用于特殊报告或与异常交互:

    pytest_internalerrorexcrepr,*excinfo *)[来源]

    要求内部错误。

    pytest_keyboard_interrupt(*excinfo *)[来源]

    要求键盘中断。

    pytest_exception_interact节点呼叫报告)[来源]

    在引发异常时调用,可以交互式处理。
    只有在引发的异常不是内部异常时才会调用此钩子skip.Exception

    pytest_enter_pdbconfig,*pdb *)[来源]

    调用pdb.set_trace()时,插件可以使用插件在python调试器进入交互模式之前采取特殊操作。

    | 参数: |

      • config_pytest.config.Config) - pytest配置对象
      • pdbpdb.Pdb) - Pdb实例
  • 相关阅读:
    jQuery碎语(1) 基础、选择要操作的元素、处理DOM元素
    C#位运算符的基本用法
    如何使用==操作符,Equals方法,ReferenceEquals方法,IEquatable接口比较2个对象
    C#实现ATM自动取款机
    如何使用C#关键字const,readonly,static
    用最简单的例子理解适配器模式(Adapter Pattern)
    前缀方式增1和后缀方式增1的区别
    抽象类可以有构造函数吗
    为什么使用抽象类,什么时候使用抽象类
    checked和unchecked的区别
  • 原文地址:https://www.cnblogs.com/linwenbin/p/13546422.html
Copyright © 2011-2022 走看看