Pytest教程

Pytest官方教程-22-API参考-Objects

2019-04-30  本文已影响6人  韩志超

目录:

  1. 安装及入门
  2. 使用和调用方法
  3. 原有TestSuite使用方法
  4. 断言的编写和报告
  5. Pytest fixtures:清晰 模块化 易扩展
  6. 使用Marks标记测试用例
  7. Monkeypatching/对模块和环境进行Mock
  8. 使用tmp目录和文件
  9. 捕获stdout及stderr输出
  10. 捕获警告信息
  11. 模块及测试文件中集成doctest测试
  12. skip及xfail: 处理不能成功的测试用例
  13. Fixture方法及测试用例的参数化
  14. 缓存: 使用跨执行状态
  15. unittest.TestCase支持
  16. 运行Nose用例
  17. 经典xUnit风格的setup/teardown
  18. 安装和使用插件
  19. 插件编写
  20. 编写钩子(hook)方法
  21. 运行日志
  22. API参考
    1. 方法(Functions)
    2. 标记(Marks)
    3. 钩子(Hooks)
    4. 装置(Fixtures)
    5. 对象(Objects)
    6. 特殊变量(Special Variables)
    7. 环境变量(Environment Variables)
    8. 配置选项(Configuration Options)
  23. 优质集成实践
  24. 片状测试
  25. Pytest导入机制及sys.path/PYTHONPATH
  26. 配置选项
  27. 示例及自定义技巧
  28. Bash自动补全设置

API参考-Objects

对象(Objects)

完全参考可从Fixturs挂钩进入的物体。

CallInfo

*class *CallInfo[source]
结果/异常信息是一个函数调用。

Class

*class *Class[source]
基地: _pytest.python.PyCollector
收集器的测试方法。
collect()[来源]
返回此集合节点的子项(项和收集器)列表。

Collector

*class *Collector[source]
基地: _pytest.nodes.Node
收集器实例通过collect()创建子项,从而迭代地构建树。
异常CollectError[来源]
基地: Exception
收集期间出错,包含自定义消息。

collect()[来源]
返回此集合节点的子项(项和收集器)列表。

repr_failure(*excinfo *)[来源]
表示集合失败。

配置

class Config[source]
访问配置值,pluginmanager和插件钩子。
option
=无

访问命令行选项作为属性。(已弃用),请getoption()改用

pluginmanager=无
一个pluginmanager实例

add_cleanup(*func *)[来源]
添加一个在配置对象不使用时调用的函数(通常与pytest_unconfigure一致)。

classmethod fromdictargsoption_dict,*args *)[source]
构造函数可用于子进程。

addinivalue_line名称[来源]
在ini-file选项中添加一行。该选项必须已声明但可能尚未设置,在这种情况下,该行将成为其值中的第一行。

getini姓名[来源]
ini文件返回配置值。如果未通过先前parser.addini 调用(通常来自插件)注册指定的名称 ,则会引发ValueError。

skip = False *)[source]
返回命令行选项值。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: |

getvaluename,*path = None *)[来源]
(不推荐使用,请使用getoption())

getvalueorskipname,*path = None *)[来源]
(不推荐使用,使用getoption(skip = True))

异常信息

class ExceptionInfoexcinfostriptext ='',*traceback = None *)[来源]
包装sys.exc_info()对象并提供导航回溯的帮助。
*classmethod from_currentexprinfo = None *)[来源]
返回与当前回溯匹配的ExceptionInfo
警告
实验API
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: | exprinfo - 一个文本字符串,帮助确定我们是否应该AssertionError从输出中剥离,默认为异常消息/__str__() |

*classmethod *for_later()[source]
返回一个未填充的ExceptionInfo

type
异常类

value
异常值

tb
异常原始追溯

typename
异常的类型名称

traceback
追溯

exconly(*tryshort = False *)[来源]
将异常作为字符串返回
当'tryshort'解析为True,异常是_pytest._code._AssertionError时,只返回异常表示的实际异常部分(因此'AssertionError:'从头开始删除)

errisinstance(*exc *)[来源]
如果异常是exc的实例,则返回True

getreprshowlocals = Falsestyle ='long'abspath = Falsetbfilter = Truefuncargs = Falsetruncate_locals = True,*chain = True *)[来源]
返回str()表示此异常信息。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: |

match(*regexp *)[来源]
将正则表达式'regexp'与异常的字符串表示形式匹配。如果匹配则返回True(这样就可以写'assert excinfo.match()')。如果不匹配则引发AssertionError。

FixtureDef

*class *FixtureDef[source]
基地: object
工厂定义的容器。

FSCollector

*class *FSCollector[source]
基地: _pytest.nodes.Collector

功能

class Function[source]
基地:_pytest.python.FunctionMixin_pytest.nodes.Item_pytest.compat.FuncargnamesCompatAttr
功能项负责设置和执行Python测试功能。
originalname
=无

原始函数名称,没有任何装饰(例如参数"[...]"化为函数名称添加后缀)。
3.0版中的新功能。

function
底层python'函数'对象

runtest()[来源]
执行基础测试功能。

setup()[来源]
执行此测试功能的设置。

项目

class Item[source]
基地: _pytest.nodes.Node
一个基本的测试调用项。请注意,对于单个函数,可能存在多个测试调用项。
user_properties
=无

user属性是一个元组列表(名称,值),用于保存此测试的用户定义属性。

add_report_section何时关键内容[来源]
添加一个新的报表部分,类似于内部完成添加stdout和stderr捕获的输出:

item.add_report_section("call", "stdout", "report section contents")

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: |

MarkDecorator

*class MarkDecoratormark *)[source]
测试函数和测试类的装饰器。应用时,它将创建MarkInfo可以通过钩子作为项目关键字检索的对象 。MarkDecorator实例通常是这样创建的:

mark1 = pytest.mark.NAME              # simple MarkDecorator
mark2 = pytest.mark.NAME(name1=value) # parametrized MarkDecorator

然后可以作为装饰器应用于测试功能:

@mark2
def test_function():
    pass

调用MarkDecorator实例时,它会执行以下操作:

  1. 如果使用单个类作为其唯一的位置参数调用而没有其他关键字参数,则它会将自身附加到类,以便自动应用于该类中的所有测试用例。
  2. 如果使用单个函数作为唯一的位置参数调用而没有其他关键字参数,则会将MarkInfo对象附加到函数,其中包含已存储在MarkDecorator内部的所有参数。
  3. 当在任何其他情况下调用时,它执行“假构造”调用,即它返回一个新的MarkDecorator实例,其原始MarkDecorator的内容使用传递给此调用的参数进行更新。

注意:上述规则阻止MarkDecorator对象仅存储单个函数或类引用作为其位置参数,而不包含其他关键字或位置参数。
name
mark.name的别名

args
mark.args的别名

kwargs
mark.kwargs的别名

with_args(** args** kwargs *)[来源]
返回添加了额外参数的MarkDecorator
与调用不同,即使唯一参数是可调用/类,也可以使用它
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 返回: | MarkDecorator |

MarkGenerator

*class *MarkGenerator[source]
MarkDecorator对象的工厂- 作为pytest.mark单例实例公开。例:

import pytest
@pytest.mark.slowtest
def test_function():
   pass

将在MarkInfo对象上设置一个“最慢” 的test_function对象。

马克

class Markname:strargs,*kwargs *)[来源]

name=无
商标名称

args=无
标记装饰器的位置参数

kwargs=无
标记装饰器的关键字参数

combined_with其他[来源]
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: | 其他马克) - 与之结合的商标 |
| 返回类型: | 标记 |
通过附加aargs和合并映射来组合

Metafunc

class Metafuncdefinitionfixtureinfoconfigcls = Nonemodule = None [来源]
Metafunc对象被传递给pytest_generate_tests钩子。它们有助于检查测试功能并根据测试配置或在定义测试功能的类或模块中指定的值生成测试。
config
=无

访问_pytest.config.Config测试Session的对象

module=无
定义测试函数的模块对象。

function=无
底层python测试功能

fixturenames=无
测试功能所需的夹具名称集

cls=无
在或中定义测试函数的类对象None

parametrizeargnamesargvaluesindirect = Falseids = None,*scope = None *)[来源]
使用给定argnames的argvalues列表向基础测试函数添加新调用。在收集阶段执行参数化。如果您需要设置昂贵的资源,请参阅设置间接,以便在测试设置时进行。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: |

模块

*class *Module[source]
基地:_pytest.nodes.File_pytest.python.PyCollector
测试类和函数的收集器。
collect()[来源]
返回此集合节点的子项(项和收集器)列表。

节点

class Node[source]
Collector的基类和测试集合树的Item。收集器子类有子节点,Items是终端节点。
name
=无

父节点范围内的唯一名称

parent=无
父收集器节点。

config=无
pytest配置对象

session=无
此节点所属的Session

fspath=无
收集此节点的文件系统路径(可以是None)

keywords=无
从所有范围收集的关键字/标记

own_markers=无
属于此节点的标记对象

extra_keyword_matches=无
允许添加额外的关键字以用于匹配

ihook
用于调用pytest钩子的fspath敏感钩子代理

warn警告[来源]
发出此项目的警告。
除非明确禁止,否则将在测试Session后显示警告
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: | 警告警告) - 要发出的警告实例。必须是PytestWarning的子类。 |
| 举: | ValueError - 如果warning实例不是PytestWarning的子类。 |
用法示例:

node.warn(PytestWarning("some message"))

nodeid
a :: - 表示其集合树地址的分隔字符串。

listchain()[来源]
从收集树的根开始返回所有父收集器的列表。

add_markermarker,*append = True *)[来源]
动态地将标记对象添加到节点。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: | 标记strpytest.mark.* 对象) - append=True是否附加标记,如果False插入位置0。 |

iter_markers名称=无[来源]
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: | name - 如果给定,则按name属性过滤结果 |
迭代节点的所有标记

*for ... in iter_markers_with_nodename = None *)[来源]
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: | name - 如果给定,则按name属性过滤结果 |
迭代节点的所有标记返回元组序列(节点,标记)

get_closest_marker名称默认=无[来源]
返回与名称匹配的第一个标记,从最近(例如函数)到更远级别(例如模块级别)。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: |

listextrakeywords()[来源]
在self和任何父母中返回一组所有额外的关键字。

addfinalizer(*fin *)[来源]
在最终确定此节点时注册要调用的函数。
只有在此节点在设置链中处于活动状态时才能调用此方法,例如在self.setup()期间。

getparent(*cls *)[来源]
获取下一个父节点(包括ownelf),它是给定类的一个实例

解析器

class Parser[source]
解析命令行参数和ini文件值。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 变量: | extra_info - 泛型参数的字典 - >在处理命令行参数时出错的情况下显示的值。 |
getgroup
name
description ='',*after = None *)[来源]
获取(或创建)命名选项组。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 名称: | 选项组的名称。 |
| 描述: | -help输出的长描述。 |
| 后: | 其他组的名称,用于排序-help输出。 |
返回的组对象具有addoption与签名相同的方法,parser.addoption但将在输出中的相应组中显示。pytest. --help

addoption(** opts** attrs *)[来源]
注册命令行选项。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 选择采用: | 选项名称,可以是短期或长期期权。 |
| ATTRS: | 相同的属性,其中add_option()所述的功能 argparse库 接受。 |
在命令行解析选项在pytest配置对象上可用之后config.option.NAMENAME通常通过传递dest属性来设置,例如 。addoption("--long", dest="NAME", ...)

parse_known_argsargs,*namespace = None *)[来源]
此时解析并返回具有已知参数的命名空间对象。

parse_known_and_unknown_argsargs,*namespace = None *)[来源]
解析并返回具有已知参数的名称空间对象,此时其余参数未知。

addininamehelptype = None,*default = None *)[source]
注册ini文件选项。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 名称: | ini-variable的名称 |
| 类型: | 该变量的类型,可以是pathlistargslinelistbool。 |
| 默认: | 默认值,如果不存在ini-file选项但是被查询。 |
可以通过调用来检索ini变量的值 config.getini(name)

插件管理

class PluginManager[source]
Core Pluginmanager类,用于管理插件对象的注册和1:N钩子调用。
您可以通过致电注册新的挂钩add_hookspec(module_or_class)。您可以通过调用注册插件对象(包含挂钩) register(plugin)。Pluginmanager初始化为在注册的插件对象的dict名称中搜索的前缀。
出于调试目的,您可以调用enable_tracing() 哪个随后将调试信息发送到跟踪帮助程序。
register
插件
名称=无[来源]
如果名称被阻止注册,请注册插件并返回其规范名称或无。如果插件已注册,则引发ValueError。

unregisterplugin = None,*name = None *)[来源]
从内部数据结构取消注册插件对象及其所有包含的钩子实现。

set_blocked姓名[来源]
阻止给定名称的注册,如果已经注册,则注销。

is_blocked姓名[来源]
如果名称博客注册该名称的插件,则返回True。

add_hookspecs(*module_or_class *)[来源]
添加给定module_or_class中定义的新钩子规范。如果相应地修饰了功能,则会识别它们。

get_plugins()[来源]
返回已注册的插件集。

is_registered插件[来源]
如果插件已经注册,则返回True。

get_canonical_name插件[来源]
返回插件对象的规范名称。请注意,插件可以使用由register(plugin,name)的调用者指定的其他名称注册。要获取已注册插件的名称,请使用get_name(plugin)

get_plugin姓名[来源]
返回给定名称的插件或None。

has_plugin姓名[来源]
如果注册了具有给定名称的插件,则返回True。

get_name插件[来源]
注册插件的返回名称,如果未注册,则返回None。

check_pending()[来源]
验证所有未针对钩子规范验证的钩子是可选的,否则引发PluginValidationError

load_setuptools_entrypoints名称=无[来源]
从查询指定的setuptools加载模块group
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 参数: |

list_plugin_distinfo()[来源]
返回所有setuptools注册插件的distinguishedfo / plugin元组列表。

list_name_plugin()[来源]
返回名称/插件对的列表。

get_hookcallers插件[来源]
获取指定插件的所有钩子调用者。

add_hookcall_monitoring之前之后[来源]
在所有挂钩的跟踪功能之前/之后添加并返回一个撤销功能,当被调用时,将删除添加的跟踪器。
before(hook_name, hook_impls, kwargs) 将在所有挂钩调用之前调用并接收一个hookcaller实例,一个HookImpl实例列表和一个钩子调用的关键字参数。
after(outcome, hook_name, hook_impls, kwargs)接收相同的参数,before但也接收一个`_Result``表示整个钩子调用的结果的对象。

enable_tracing()[来源]
启用对钩子调用的跟踪并返回撤销功能。

subset_hook_callername,*remove_plugins *)[来源]
为命名方法返回一个新的_HookCaller实例,该方法管理除remove_plugins之外的所有已注册插件的调用。

PytestPluginManager

*class *PytestPluginManager[source]
基地: pluggy.manager.PluginManager
覆盖pluggy.PluginManager以添加特定于pytest的功能:

parse_hookimpl_opts插件名称[来源]

parse_hookspec_optsmodule_or_class,*name *)[来源]

register插件名称=无[来源]
如果名称被阻止注册,请注册插件并返回其规范名称或无。如果插件已注册,则引发ValueError。

getplugin姓名[来源]

hasplugin姓名[来源]
如果注册了具有给定名称的插件,则返回True。

pytest_configure(*config *)[来源]

consider_preparse(*args *)[来源]

consider_pluginarg(*arg *)[来源]

consider_conftest(*conftestmodule *)[来源]

consider_env()[来源]

consider_module(*mod *)[来源]

import_pluginmodname,*consideration_entry_points = False *)[来源]
用插件导入插件modname。如果consider_entry_points为True,则还会将入口点名称视为查找插件。

Session

*class *Session[source]
基地: _pytest.nodes.FSCollector
异常Interrupted
基地: KeyboardInterrupt
发出中断的测试运行信号。

异常Failed
基地: Exception
在测试运行失败时发出停止信号。

*for ... in *collect()[source]
返回此集合节点的子项(项和收集器)列表。

TestReport

class TestReport[source]
基本测试报告对象(如果失败,也用于设置和拆除调用)。
nodeid
=无

规范化的集合节点ID

location=无
a(filesystempath,lineno,domaininfo)元组指示测试项的实际位置 - 它可能与收集的测试项不同,例如,如果方法是从不同的模块继承的。

keywords=无
name - > value字典,包含与测试调用关联的所有关键字和标记。

outcome=无
测试结果,总是“通过”,“失败”,“跳过”之一。

longrepr=无
无或失败表示。

when=无
'setup','call','teardown'之一表示测试阶段。

user_properties=无
user属性是一个元组列表(名称,值),用于保存用户定义的测试属性

sections=无
需要编组的额外信息对的列表。通过pytest用于添加从捕获的文本和,但是可以通过其它的插件可用于任意信息添加到报表。(str, str)``stdout``stderr

duration=无
只运行测试所花费的时间

classmethod from_item_and_callitem,*call *)
使用标准项和调用信息创建和填充TestReport的工厂方法。

caplog
如果启用了日志捕获,则返回捕获的日志行
版本3.5中的新功能。

capstderr
如果启用了捕获,则从stderr返回捕获的文本
3.0版中的新功能。

capstdout
如果启用了捕获,则从stdout返回捕获的文本
3.0版中的新功能。

count_towards_summary
试验
如果此报告应计入测试Session结束时显示的总计,则返回True:“1通过,1失败等”。
注意
此功能被认为是实验性的,因此请注意即使在修补程序版本中它也会发生变化。

head_line
试验
返回此报告的longrepr输出显示的头行,更常见的是在故障期间的回溯表示期间:

________ Test.foo ________

在上面的示例中,head_line是“Test.foo”。
注意
此功能被认为是实验性的,因此请注意即使在修补程序版本中它也会发生变化。

longreprtext
只读属性,返回完整的字符串表示形式longrepr
3.0版中的新功能。

[_result ]

class _Resultresult,*excinfo *)
result
获取此挂钩调用的结果(DEPRECATED支持get_result())。

force_result结果
强制结果result
如果挂钩被标记为firstresult单个值,则应设置否则设置(修改)结果列表。调用期间发现的任何异常都将被删除。

get_result()
获取此挂钩调用的结果。
如果钩子被标记为firstresult只有一个值,则返回结果列表。

上一篇下一篇

猜你喜欢

热点阅读