- Pytest:帮助您编写更好的程序
- 完整的 Pytest 文档
- 安装和入门
- 使用和调用
- 在现有测试套件中使用 pytest
- 测试中断言的编写和报告
- Pytest 夹具:显式、模块化、可扩展
- 用属性标记测试函数
- MonkeyPatching / Mocking 模块和环境
- 临时目录和文件
- 捕获 stdout/stderr 输出
- 捕获警告
- 模块和测试文件的 Doctest 集成
- 跳过和 xfail:处理无法成功的测试
- 参数化夹具和测试功能
- 缓存:使用交叉测试运行状态
- UnitTest.TestCase 支持
- 运行为鼻子编写的测试
- 经典的 Xunit 风格设置
- 安装和使用插件
- 编写插件
- 登录
- 良好的集成实践
- 古怪的测试
- Pytest 导入机制和 sys.path/PYTHONPATH
- 设置 bash 完成
- API 引用
- _pytest.hookspec
- _pytest.python_api
- _pytest.outcomes
- _pytest.config
- _pytest.mark
- _pytest.recwarn
- _pytest.assertion
- _pytest.freeze_support
- _pytest.fixtures
- _pytest.cacheprovider
- _pytest.capture
- _pytest.doctest
- _pytest.junitxml
- _pytest.logging
- _pytest.monkeypatch
- _pytest.pytester
- _pytest.tmpdir
- _pytest.python
- _pytest.nodes
- _pytest.reports
- _pytest._code.code
- _pytest.config.argparsing
- _pytest.main
- pluggy.callers
- _pytest.config.exceptions
- py.test 2.0.0:断言++、UnitTest++、Reporting++、Config++、Docs++
- 示例和自定义技巧
- 配置
- 贡献开始
- 向后兼容策略
- Python 2.7 和 3.4 支持
- 企业版 pytest
- 项目实例
- 历史笔记
- 弃用和移除
- 发展指南
- 演讲和辅导
API 引用
此页包含对 Pytest 的 API 的完整引用。
功能
pytest.approx
approx
(expected, rel=None, abs=None, nan_ok: bool = False) → _pytest.python_api.ApproxBase [源代码]断言两个数字(或两组数字)在某些公差内彼此相等。
由于 `intricacies of floating-point arithmetic`_ _我们凭直觉认为相等的数字并不总是这样的:
>>> 0.1 + 0.2 == 0.3 False
在编写测试时通常会遇到这个问题,例如,在确保浮点值是您期望的值时。解决这个问题的一种方法是断言两个浮点数在适当的公差范围内相等:
>>> abs((0.1 + 0.2) - 0.3) < 1e-6 True
然而,这样的比较写起来很繁琐,很难理解。此外,像上面这样的绝对比较通常是不鼓励的,因为没有任何一种对所有情况都有效的容忍。
1e-6
适合周围的数字1
但是对于非常大的数字来说太小了,对于非常小的数字来说太大了。最好将公差表示为期望值的一部分,但是这样的相对比较更难正确、简洁地书写。这个
approx
类使用尽可能直观的语法执行浮点比较:>>> from pytest import approx >>> 0.1 + 0.2 == approx(0.3) True
同样的语法也适用于数字序列:
>>> (0.1 + 0.2, 0.2 + 0.4) == approx((0.3, 0.6)) True
词典 价值观 ::
>>> {'a': 0.1 + 0.2, 'b': 0.2 + 0.4} == approx({'a': 0.3, 'b': 0.6}) True
numpy
数组:>>> import numpy as np >>> np.array([0.1, 0.2]) + np.array([0.2, 0.4]) == approx(np.array([0.3, 0.6])) True
为了一个
numpy
针对标量的数组::>>> import numpy as np >>> np.array([0.1, 0.2]) + np.array([0.2, 0.1]) == approx(0.3) True
默认情况下,
approx
考虑相对公差范围内的数字1e-6
(即百万分之一)其预期价值相等。如果预期值为0.0
因为除了0.0
它本身就比较接近0.0
. 为了不那么惊讶地处理这个案子,approx
还考虑绝对公差范围内的数字1e-12
其预期值相等。无穷大和 NaN 是特殊情况。无穷大只被视为等于它本身,而不考虑相对公差。默认情况下,NaN 不被视为等于任何内容,但可以通过设置nan_ok
变为真。(这是为了便于比较使用 NaN 表示 无数据 的数组。)通过将参数传递给
approx
施工人员:>>> 1.0001 == approx(1) False >>> 1.0001 == approx(1, rel=1e-3) True >>> 1.0001 == approx(1, abs=1e-3) True
如果您指定
abs
但不是rel
比较完全不会考虑相对公差。换句话说,在默认相对公差范围内的两个数字1e-6
如果超过规定的绝对公差,仍将被视为不相等。如果您同时指定abs
和rel
,如果满足以下任一公差,则数字视为相等:>>> 1 + 1e-8 == approx(1) True >>> 1 + 1e-8 == approx(1, abs=1e-12) False >>> 1 + 1e-8 == approx(1, rel=1e-6, abs=1e-12) True
您也可以使用
approx
比较非数值类型,或包含非数值类型的字典和序列,在这种情况下,它将退回到严格相等。这对于比较可以包含可选值的字典和序列非常有用:>>> {"required": 1.0000005, "optional": None} == approx({"required": 1, "optional": None}) True >>> [None, 1.0000005] == approx([None,1]) True >>> ["foo", 1.0000005] == approx([None,1]) False
如果你想用
approx
,那么您可能想知道它如何与其他比较浮点数的好方法进行比较。所有这些算法都是基于相对公差和绝对公差的,在大多数情况下应该是一致的,但它们确实有意义的区别:math.isclose(a, b, rel_tol=1e-9, abs_tol=0.0)
:如果相对公差满足 w.r.t.或a
或b
或者满足绝对公差。因为相对公差是用两种方法计算的a
和b
,此测试是对称的(即两者都不是a
也不b
是 参考值 )。如果要与比较,必须指定绝对公差0.0
因为默认情况下没有公差。 `More information...`_ _numpy.isclose(a, b, rtol=1e-5, atol=1e-8)
:如果a
和b
小于相对公差 w.r.t.b
以及绝对容忍度。因为相对公差只计算 w.r.t.b
,这个测试是不对称的,你可以想到b
作为参考值。支持比较序列的是numpy.allclose
. `More information...`_ _unittest.TestCase.assertAlmostEqual(a, b)
如果是真a
和b
在绝对公差范围内1e-7
. 不考虑相对公差,绝对公差不能改变,因此该函数不适用于非常大或非常小的数字。而且,它只在unittest.TestCase
它很难看,因为它不符合 pep8。 `More information...`_ _a == pytest.approx(b, rel=1e-6, abs=1e-12)
:如果相对公差满足 w.r.t.b
或者满足绝对公差。因为相对公差只计算 w.r.t.b
,这个测试是不对称的,你可以想到b
作为参考值。在特殊情况下,如果明确指定绝对公差而不是相对公差,则只考虑绝对公差。
警告
在 3.2 版更改.
为了避免不一致的行为,
TypeError
被提升为>
,>=
,<
和<=
比较。下面的示例说明了问题:assert approx(0.1) > 0.1 + 1e-10 # calls approx(0.1).__gt__(0.1 + 1e-10) assert 0.1 + 1e-10 > approx(0.1) # calls approx(0.1).__lt__(0.1 + 1e-10)
在第二个示例中,我们期望
approx(0.1).__le__(0.1 + 1e-10)
被召唤。但是,相反,approx(0.1).__lt__(0.1 + 1e-10)
用于比较。这是因为富比较的调用层次结构遵循固定的行为。 `More information...`_ _在 3.7.1 版更改:
approx
加薪TypeError
当它遇到非数值类型的 dict 值或序列元素时。在 6.1.0 版更改:
approx
回退到非数值类型的严格相等,而不是引发TypeError
.
pytest.fail
教程 : 跳过和 xfail:处理无法成功的测试
pytest.skip
skip
(msg[, allow_module_level=False]) [源代码]跳过具有给定消息的正在执行的测试。
此函数只能在测试(设置、调用或拆卸)或收集期间使用
allow_module_level
旗帜。这个函数也可以在 doctests 中调用。- 参数
allow_module_level ( bool ) -- 允许在模块级别调用此函数,跳过模块的其余部分。默认为 False。
注解
最好用 pytest.mark.skipif 标记(如果可能)声明在某些情况下跳过测试,如平台或依赖项不匹配。同样,使用
# doctest: +SKIP
指令(见) doctest.SKIP )以静态方式跳过一个博士测试。
pytest.importorskip
importorskip
(modname: str , minversion: Optional[ str ] = None, reason: Optional[ str ] = None) → Any [源代码]导入并返回请求的模块
modname
如果无法导入模块,则跳过当前测试。- 参数
- 返回
导入的模块。这应该被指定给它的规范名称。
例子::
docutils = pytest.importorskip("docutils")
pytest.xfail
xfail
(reason: str = '') → NoReturn [源代码]根据给定的原因强制地发送正在执行的测试或设置函数。
只应在测试(设置、调用或拆卸)期间调用此函数。
注解
最好用 pytest.mark.xfail 标记(如果可能)在某些情况下声明测试为 Xfailed,如已知错误或缺少特性。
pytest.exit
pytest.main
main
(args: Optional[Union[List[ str ], py._path.local.LocalPath]] = None, plugins: Optional[Sequence[Union[ str , object ]]] = None) → Union[ int , _pytest.config.ExitCode] [源代码]执行进程内测试运行。
- 参数
args -- 命令行参数列表。
plugins -- 初始化期间要自动注册的插件对象列表。
- 返回
退出代码。
pytest.param
param
(*values[, id][, marks]) [源代码]在中指定参数 pytest.mark.parametrize 来电或 parametrized fixtures .
@pytest.mark.parametrize( "test_input,expected", [("3+5", 8), pytest.param("6*9", 42, marks=pytest.mark.xfail),], ) def test_eval(test_input, expected): assert eval(test_input) == expected
- 参数
values -- 参数集值的变量参数,按顺序排列。
marks -- 要应用于此参数集的单个标记或标记列表。
id ( str ) -- 此参数集的属性的 id。
pytest.raises
教程 : 关于预期异常的断言 .
- with
raises
(expected_exception: Union[Type[_E], Tuple[Type[_E], ...]], *, match: Optional[Union[ str , Pattern[ str ]]] = '...') → RaisesContext[_E] as excinfo [源代码] - with
raises
(expected_exception: Union[Type[_E], Tuple[Type[_E], ...]], func: Callable[[...], Any], *args: Any, **kwargs: Any) → _pytest._code.code.ExceptionInfo[_E] as excinfo 断言代码块/函数调用引发
expected_exception
否则将引发失败异常。- 参数
match -- 如果指定,则为包含正则表达式或正则表达式对象的字符串,该字符串使用
re.search
. 匹配可能包含 `special characters`_ _,模式可以先用re.escape
. (仅在以下情况下使用pytest.raises
用作上下文管理器,否则传递给函数。使用时pytest.raises
作为函数,您可以使用:pytest.raises(Exc, func, match="passed on").match("my pattern")
) __ https://docs.python.org/3/library/re.htmlregular -表达式语法
使用
pytest.raises
作为上下文管理器,它将捕获给定类型的异常:>>> import pytest >>> with pytest.raises(ZeroDivisionError): ... 1/0
如果代码块未引发预期的异常 (
ZeroDivisionError
在上面的示例中),或者根本没有异常,检查将失败。也可以使用关键字参数
match
要断言异常与文本或 regex 匹配,请执行以下操作:>>> with pytest.raises(ValueError, match='must be 0 or None'): ... raise ValueError("value must be 0 or None") >>> with pytest.raises(ValueError, match=r'must be \d+$'): ... raise ValueError("value must be 42")
上下文管理器生成
ExceptionInfo
可用于检查捕获异常的详细信息的对象:>>> with pytest.raises(ValueError) as exc_info: ... raise ValueError("value must be 42") >>> assert exc_info.type is ValueError >>> assert exc_info.value.args[0] == "value must be 42"
注解
使用时
pytest.raises
作为上下文管理器,值得注意的是,正常的上下文管理器规则适用,并且引发了异常 must 是上下文管理器范围内的最后一行。之后,在上下文管理器范围内的代码行将不会被执行。例如::>>> value = 15 >>> with pytest.raises(ValueError) as exc_info: ... if value > 10: ... raise ValueError("value must be <= 10") ... assert exc_info.type is ValueError # this will not execute
相反,必须采用以下方法(注意范围的不同)::
>>> with pytest.raises(ValueError) as exc_info: ... if value > 10: ... raise ValueError("value must be <= 10") ... >>> assert exc_info.type is ValueError
使用与
pytest.mark.parametrize
使用时 pytest.mark.parametrize 参数化测试是可能的,这样一些运行会引发异常,而另一些则不会。
见 参数化条件提升 举个例子。
遗留格式
可以通过传递一个要调用的 lambda 来指定一个可调用的:
>>> raises(ZeroDivisionError, lambda: 1/0) <ExceptionInfo ...>
或者,可以使用以下参数指定任意可调用:
>>> def f(x): return 1/x ... >>> raises(ZeroDivisionError, f, 0) <ExceptionInfo ...> >>> raises(ZeroDivisionError, f, x=0) <ExceptionInfo ...>
上面的表单是完全支持的,但不支持新代码,因为上下文管理器表单被视为可读性更强、不易出错。
注解
与 python 中捕获的异常对象类似,显式清除返回的本地引用
ExceptionInfo
对象可以帮助 Python 解释器加速垃圾收集。清除这些引用会中断引用循环 (
ExceptionInfo
-->catched exception-->frame stack raising the exception-->current frame stack-->local variables-->ExceptionInfo
)这使得 Python 保持从该循环引用的所有对象(包括当前帧中的所有局部变量)在下一次循环垃圾回收运行之前保持活动状态。更详细的信息可以在官方的 Python 文档中找到 the try statement .
pytest.deprecated_call
教程 : 确保代码触发拒绝警告 .
- with
deprecated_call
(*, match: Optional[Union[ str , Pattern[ str ]]] = '...') → WarningsRecorder [源代码] - with
deprecated_call
(func: Callable[[...], T], *args: Any, **kwargs: Any) → T 断言代码生成
DeprecationWarning
或PendingDeprecationWarning
.此函数可用作上下文管理器::
>>> import warnings >>> def api_call_v2(): ... warnings.warn('use v3 of this api', DeprecationWarning) ... return 200 >>> import pytest >>> with pytest.deprecated_call(): ... assert api_call_v2() == 200
也可以通过传递函数和
*args
和**kwargs
,在这种情况下,它将确保调用func(*args, **kwargs)
生成上述警告类型之一。返回值是函数的返回值。在上下文管理器窗体中,可以使用关键字参数
match
断言警告与文本或正则表达式匹配。上下文管理器生成一个
warnings.WarningMessage
对象,每发出一个警告一个。
pytest.register_assert_rewrite
教程 : 断言重写 .
register_assert_rewrite
(*names: str ) → None [源代码]注册导入时要重写的一个或多个模块名。
此函数将确保此模块或包中的所有模块将重写其断言语句。因此,在实际导入模块之前,通常在 __init__. 如果你是一个使用软件包的插件。
- 引发
TypeError -- 如果给定的模块名不是字符串。
pytest.warns
教程 : 使用警告功能断言警告
- with
warns
(expected_warning: Optional[Union[Type[ Warning ], Tuple[Type[ Warning ], ...]]], *, match: Optional[Union[ str , Pattern[ str ]]] = '...') → WarningsChecker [源代码] - with
warns
(expected_warning: Optional[Union[Type[ Warning ], Tuple[Type[ Warning ], ...]]], func: Callable[[...], T], *args: Any, **kwargs: Any) → T 断言代码引发特定的警告类。
具体来说,参数
expected_warning
可以是警告类或警告类序列,并且with
块必须发出一个或多个类的警告。此帮助程序生成
warnings.WarningMessage
对象,每发出一个警告一个。此函数可以用作上下文管理器,或任何其他方式
pytest.raises()
可用于:>>> import pytest >>> with pytest.warns(RuntimeWarning): ... warnings.warn("my warning", RuntimeWarning)
在上下文管理器窗体中,可以使用关键字参数
match
要断言警告与文本或正则表达式匹配,请执行以下操作:>>> with pytest.warns(UserWarning, match='must be 0 or None'): ... warnings.warn("value must be 0 or None", UserWarning) >>> with pytest.warns(UserWarning, match=r'must be \d+$'): ... warnings.warn("value must be 42", UserWarning) >>> with pytest.warns(UserWarning, match=r'must be \d+$'): ... warnings.warn("this is not here", UserWarning) Traceback (most recent call last): ... Failed: DID NOT WARN. No warnings of type ...UserWarning... was emitted...
pytest.freeze_includes
教程 : 冻结试验 .
标志
标记可用于将元数据应用于 测试函数 (但不是设备),然后可以通过设备或插件访问。
pytest.mark.filterwarnings
教程 : @pytest.mark.filterwarnings .
向标记的测试项添加警告筛选器。
pytest.mark.
filterwarnings
(filter)- 参数
filter ( str ) -- A 警告规范字符串 ,由元组的内容组成
(action, message, category, module, lineno)
如中所述 The Warnings filter python 文档的部分,由":"
. 可选字段可以省略。传递给筛选的模块名不是正则表达式转义的。例如:。。代码块:: python@pytest.mark .filterwarnings("忽略:。 用法将被弃用。 :deprecationwarning )def test_foo():…
pytest.mark.parametrize
教程 : 参数化夹具和测试功能 .
这个标记的签名与 pytest.Metafunc.parametrize()
;看那里。
pytest.mark.skip
教程 : 跳过测试函数 .
无条件跳过测试函数。
pytest.mark.
skip
(*, reason=None)- 参数
reason ( str ) -- 跳过测试函数的原因。
pytest.mark.skipif
教程 : 跳过测试函数 .
如果条件为 True
.
pytest.mark.
skipif
(condition, *, reason=None)- 参数
condition ( bool or str ) --
True/False
如果应跳过条件或 condition string .reason ( str ) -- 跳过测试函数的原因。
pytest.mark.usefixtures
教程 : 在类和模块中使用 fixture usefixtures .
将测试函数标记为使用给定的 fixture 名称。
pytest.mark.
usefixtures
(*names)- 参数
args -- 要使用的设备的名称,如字符串。
注解
使用时 usefixtures
在 hooks 中,它只能在测试设置之前加载 fixture(例如在 pytest_collection_modifyitems
钩子)。
另请注意,此标志在应用于以下对象时不起作用 夹具 .
pytest.mark.xfail
教程 : xfail:将测试功能标记为预期失败 .
将测试函数标记为 预计会失败 .
pytest.mark.
xfail
(condition=None, *, reason=None, raises=None, run=True, strict=False)- 参数
condition ( bool or str ) -- 将测试功能标记为 xfail 的条件 (
True/False
或 A condition string ). 如果是 bool,还必须指定reason
(见 condition string )reason ( str ) -- 测试函数标记为 xfail 的原因。
raises (Type[ Exception ]) -- 异常子类预期由测试函数引发;其他异常将使测试失败。
run ( bool ) -- 是否应实际执行测试功能。如果
False
,函数将始终 Xfail 且不会执行(如果函数是 segfaulting,则很有用)。strict ( bool ) --
如果
False
(默认)功能将在终端输出中显示为xfailed
如果失败了,xpass
如果它通过。在这两种情况下,这不会导致整个测试套件失败。这对于标记 薄片状的 稍后要处理的测试(随机失败的测试)。如果
True
,功能将在终端输出中显示为xfailed
如果它失败了,但是如果它意外地通过了,那么它将 fail 测试套件。这对于标记总是失败的函数特别有用,如果函数意外开始通过,则应该有明确的指示(例如,库的新版本修复了已知的错误)。
自定义标记
标记是使用工厂对象动态创建的。 pytest.mark
用作装饰。
例如:
@pytest.mark.timeout(10, "slow", method="thread") def test_function(): ...
将创建并附加 Mark
集合的对象 Item
可通过固定装置或钩子 Node.iter_markers
. 这个 mark
对象将具有以下属性:
mark.args == (10, "slow") mark.kwargs == {"method": "thread"}
使用多个自定义标记的示例:
@pytest.mark.timeout(10, "slow", method="thread") @pytest.mark.slow def test_function(): ...
什么时候? Node.iter_markers
或 Node.iter_markers
与多个标记一起使用时,将首先迭代距离函数最近的标记。上面的示例将导致 @pytest.mark.slow
然后 @pytest.mark.timeout(...)
.
夹具
教程 : Pytest 夹具:显式、模块化、可扩展 .
通过将 fixture 声明为参数名,测试函数或其他 fixture 可以请求 fixture。
需要夹具的测试示例:
def test_output(capsys): print("hello") out, err = capsys.readouterr() assert out == "hello\n"
需要另一个夹具的夹具示例:
@pytest.fixture def db_session(tmpdir): fn = tmpdir / "db.file" return connect(str(fn))
有关详细信息,请参阅 fixtures docs .
@pytest.fixture
@
fixture
(fixture_function: _FixtureFunction, *, scope: Union[_Scope, Callable[[ str , Config], _Scope]] = '...', params: Optional[Iterable[ object ]] = '...', autouse: bool = '...', ids: Optional[Union[Iterable[Union[ None , str , float , int , bool ]], Callable[[Any], Optional[ object ]]]] = '...', name: Optional[ str ] = '...') → _FixtureFunction [源代码]@
fixture
(fixture_function: None = '...', *, scope: Union[_Scope, Callable[[ str , Config], _Scope]] = '...', params: Optional[Iterable[ object ]] = '...', autouse: bool = '...', ids: Optional[Union[Iterable[Union[ None , str , float , int , bool ]], Callable[[Any], Optional[ object ]]]] = '...', name: Optional[ str ] = 'None') → _pytest.fixtures.FixtureFunctionMarker用于标记夹具工厂功能的修饰符。
可以使用此修饰符(有参数或无参数)来定义 fixture 函数。
fixture 函数的名称稍后可以被引用,以在运行测试之前进行调用:测试模块或类可以使用
pytest.mark.usefixtures(fixturename)
标记。测试函数可以直接使用 fixture 名称作为输入参数,在这种情况下,fixture 函数返回的 fixture 实例将被注入。
夹具可以提供它们的值来测试使用
return
或yield
声明。使用时yield
后面的代码块yield
无论测试结果如何,语句都作为拆卸代码执行,并且必须只生成一次。- 参数
scope -- 共享这个设备的范围;一个
"function"
(默认)"class"
,"module"
,"package"
或"session"
. 此参数也可以是接收(fixture_name, config)
作为参数返回str
使用上面提到的值之一。看到了吗 动态范围 更多信息,请参阅文档。params -- 一个可选的参数列表,它将导致多次调用 fixture 函数和使用它的所有测试。当前参数在中可用
request.param
.autouse -- 如果为 True,那么 fixture 函数将为所有可以看到它的测试激活。如果为 False(默认值),则需要显式引用来激活设备。
ids -- 字符串 id 的列表,每个与参数相对应,因此它们是测试 id 的一部分。如果没有提供 id,则将从参数自动生成这些 id。
name -- 设备的名称。默认为修饰函数的名称。如果 fixture 是在定义 fixture 的同一个模块中使用的,那么 fixture 的函数名将被请求 fixture 的函数 arg 隐藏;解决这个问题的一种方法是命名修饰函数
fixture_<fixturename>
然后使用@pytest.fixture(name='<fixturename>')
.
config.cache
教程 : 缓存:使用交叉测试运行状态 .
这个 config.cache
对象允许其他插件和设备跨测试运行存储和检索值。从夹具请求访问它 pytestconfig
把它放进你的设备里 pytestconfig.cache
.
在引擎盖下,缓存插件使用 dumps
/ loads
API json
STDLIB 模块。
config.cache
是的实例 pytest.Cache
:
- final class
Cache
[源代码] makedir
(name: str ) → py._path.local.LocalPath [源代码]返回具有给定名称的目录路径对象。
如果目录尚不存在,将创建它。您可以使用它来管理文件,例如跨测试会话存储/检索数据库转储。
- 参数
name -- 必须是不包含
/
分离器。确保该名称包含插件或应用程序标识符,以防止与其他缓存用户发生冲突。
卡普西斯
教程 : 捕获 stdout/stderr 输出 .
capsys
() [源代码]启用写入的文本捕获
sys.stdout
和sys.stderr
.捕获的输出通过
capsys.readouterr()
方法调用,它返回(out, err)
命名元组。out
和err
将text
物体。返回的实例
CaptureFixture[str]
.例子:
def test_output(capsys): print("hello") captured = capsys.readouterr() assert captured.out == "hello\n"
- class
CaptureFixture
[源代码] 返回的对象
capsys
,capsysbinary
,capfd
和capfdbinary
固定装置。readouterr
() → _pytest.capture.CaptureResult [源代码]读取并返回到目前为止捕获的输出,重置内部缓冲区。
- 返回
将捕获的内容作为 namedtuple 与
out
和err
字符串属性。
双星
教程 : 捕获 stdout/stderr 输出 .
capsysbinary
() [源代码]启用写入的字节捕获
sys.stdout
和sys.stderr
.捕获的输出通过
capsysbinary.readouterr()
方法调用,它返回(out, err)
命名元组。out
和err
将bytes
物体。返回的实例
CaptureFixture[bytes]
.例子:
def test_output(capsysbinary): print("hello") captured = capsysbinary.readouterr() assert captured.out == b"hello\n"
CAPFD
教程 : 捕获 stdout/stderr 输出 .
capfd
() [源代码]启用写入文件描述符的文本捕获
1
和2
.捕获的输出通过
capfd.readouterr()
方法调用,它返回(out, err)
命名元组。out
和err
将text
物体。返回的实例
CaptureFixture[str]
.例子:
def test_system_echo(capfd): os.system('echo "hello"') captured = capfd.readouterr() assert captured.out == "hello\n"
二元二进制
教程 : 捕获 stdout/stderr 输出 .
capfdbinary
() [源代码]启用写入文件描述符的字节捕获
1
和2
.捕获的输出通过
capfd.readouterr()
方法调用,它返回(out, err)
命名元组。out
和err
将byte
物体。返回的实例
CaptureFixture[bytes]
.例子:
def test_system_echo(capfdbinary): os.system('echo "hello"') captured = capfdbinary.readouterr() assert captured.out == b"hello\n"
doctest_namespace
教程 : 模块和测试文件的 Doctest 集成 .
doctest_namespace
() [源代码]返回一个
dict
它将被注入 doctests 的名称空间。通常,此夹具与其他夹具一起使用
autouse
固定装置:@pytest.fixture(autouse=True) def add_np(doctest_namespace): doctest_namespace["np"] = numpy
有关详细信息: 'doctest_namespace'夹具 .
请求
教程 : 根据命令行选项,将不同的值传递给测试函数 .
这个 request
夹具是提供请求测试功能信息的特殊夹具。
- class
FixtureRequest
[源代码] 测试或夹具功能对夹具的请求。
请求对象提供对请求的测试上下文的访问,并且具有可选的
param
属性,以防设备被间接参数化。fixturename
: Optional[ str ]正在为其执行此请求的设备。
scope
: _Scope作用域字符串, function 、 class 、 module 、 session 之一。
fixturenames
此请求中所有活动装置的名称。
node
基础集合节点(取决于当前请求范围)。
config
与此请求关联的 pytest 配置对象。
function
如果请求具有每个函数范围,则测试函数对象。
cls
类(可以是 None),其中收集了测试函数。
instance
在其上收集测试函数的实例(可以是 None)。
module
收集测试函数的 Python 模块对象。
fspath
收集此测试的测试模块的文件系统路径。
keywords
基础节点的关键字/标记词典。
session
Pytest 会话对象。
addfinalizer
(finalizer: Callable[], object ]) → None [源代码]添加 finalizer/teardown 函数,以便在请求的测试上下文中的最后一个测试完成执行后调用。
PyTestCONFIG
pytestconfig
() [源代码]会话范围的 fixture,返回
_pytest.config.Config
对象。例子::
def test_foo(pytestconfig): if pytestconfig.getoption("verbose") > 0: ...
record_property
教程 : record_property .
record_property
() [源代码]向调用测试添加额外属性。
用户属性成为测试报告的一部分,可供配置的报告器使用,如 junitxml。
固定装置可使用
name, value
. 该值是自动 XML 编码的。例子::
def test_function(record_property): record_property("example_key", 1)
record_testsuite_property
教程 : record_testsuite_property .
record_testsuite_property
() [源代码]录制新的
<property>
标记为根的子级<testsuite>
.这适合于编写关于整个测试套件的全局信息,并且与
xunit2
朱尼特家族。这是一个
session
-使用调用的作用域固定装置(name, value)
.例子:def test_foo(record_testsuite_property): record_testsuite_property("ARCH", "PPC") record_testsuite_property("STORAGE_TYPE", "CEPH")
name
必须是字符串,value
将转换为字符串并正确进行 XML 转义。警告
目前这个固定装置 不起作用 与 pytest-xdist 插件。见问题 #7767 有关详细信息。
卡普洛格
教程 : 登录 .
caplog
() [源代码]访问和控制日志捕获。
捕获的日志通过以下属性/方法可用:
* caplog.messages -> list of format-interpolated log messages * caplog.text -> string containing formatted log output * caplog.records -> list of logging.LogRecord instances * caplog.record_tuples -> list of (logger_name, level, message) tuples * caplog.clear() -> clear captured records and formatted log output string
返回 A
pytest.LogCaptureFixture
实例。
- final class
LogCaptureFixture
[源代码] 提供日志捕获的访问和控制。
handler
获取 fixture 使用的日志处理程序。
- 返回类型
LogCaptureHandler
get_records
(when: str ) → List[ logging.LogRecord ] [源代码]获取某个可能的测试阶段的日志记录。
- 参数
when ( str ) -- 从哪个测试阶段获取记录。有效值为: 设置 、 调用 和 拆卸 。
- 返回
在给定阶段捕获的记录的列表。
- 返回类型
List[ logging.LogRecord ]
3.4 新版功能.
text
格式化的日志文本。
records
日志记录的列表。
record_tuples
用于断言比较的日志记录的精简版本的列表。
元组的格式为:
(记录器名称、日志级别、消息)
messages
插入日志消息格式的列表。
与包含格式字符串和插值参数的 records 不同,此列表中的日志消息都是插值的。
与包含处理程序输出的 text 不同,此列表中的日志消息没有添加级别、时间戳等,这使得精确的比较更加可靠。
请注意,回溯或堆栈信息(来自
logging.exception()
或exc_info
或stack_info
日志函数的参数)不包括在内,因为它是由处理程序中的格式化程序添加的。3.7 新版功能.
monkeypatch
教程 : MonkeyPatching/Mocking 模块和环境 .
monkeypatch
() [源代码]一个方便的猴子修补夹具。
fixture 提供了这些方法来修改对象、字典或操作系统环境:
monkeypatch.setattr(obj, name, value, raising=True) monkeypatch.delattr(obj, name, raising=True) monkeypatch.setitem(mapping, name, value) monkeypatch.delitem(obj, name, raising=True) monkeypatch.setenv(name, value, prepend=False) monkeypatch.delenv(name, raising=True) monkeypatch.syspath_prepend(path) monkeypatch.chdir(path)
所有修改将在请求的测试功能或夹具完成后撤消。这个
raising
参数确定如果设置/删除操作没有目标,是否将引发 keyError 或 attributeError。返回 A
MonkeyPatch
实例。
- final class
MonkeyPatch
[源代码] helper 可以方便地 monkeypatch 属性/项/环境变量/syspath。
由
monkeypatch
固定装置。- 版本已更改:
6.2 现在还可以直接用作
pytest.MonkeyPatch()
,用于设备不可用的情况。在这种情况下,使用with MonkeyPatch.context() as mp:
或者记得打电话给undo()
明确地。
- classmethod with
context
() → Generator[ MonkeyPatch , None , None ] [源代码] 返回新的
MonkeyPatch
对象,撤消在with
出口时封锁。例子:
import functools def test_partial(monkeypatch): with monkeypatch.context() as m: m.setattr(functools, "partial", 3)
在需要在测试结束前撤消一些补丁的情况下很有用,例如模拟
stdlib
如果模拟可能会破坏 pytest 本身的函数(有关此示例,请参见 #3290 .
setattr
(target: str , name: object , value: _pytest.monkeypatch.Notset = '...', raising: bool = '...') → None [源代码]setattr
(target: object , name: str , value: object , raising: bool = '...') → None在目标上设置属性值,记住旧值。
为了方便起见,可以将字符串指定为
target
它将被解释为一个点式导入路径,最后一部分是属性名。例如,monkeypatch.setattr("os.getcwd", lambda: "/")
将设置getcwd
功能os
模块。如果属性不存在,则引发 AttributeError,除非
raising
设置为 False。
delattr
(target: Union[object, str], name: Union[str, _pytest.monkeypatch.Notset] = <notset>, raising: bool = True) → None [源代码]删除属性
name
从target
.如果没有
name
已指定并且target
是一个字符串,它将被解释为一个点式导入路径,最后一部分是属性名。引发 AttributeError 属性不存在,除非
raising
设置为 False。
delitem
(dic: MutableMapping[K, V], name: K, raising: bool = True) → None [源代码]删除
name
来自 dict。加薪
KeyError
如果它不存在,除非raising
设置为 False。
setenv
(name: str , value: str , prepend: Optional[ str ] = None) → None [源代码]设置环境变量
name
到value
.如果
prepend
是一个字符,读取当前环境变量值,并在value
与…相连prepend
性格。
烘干机
6.2 新版功能.
提供了一个 Pytester
实例,该实例可用于运行和测试 pytest 本身。
它提供了一个空目录,可以在其中隔离执行 pytest,并包含用于编写测试、配置文件和匹配预期输出的工具。
要使用它,请将其包含在您的最上面 conftest.py
文件:
pytest_plugins = "pytester"
- final class
Pytester
[源代码] 编写测试/配置文件、隔离执行 pytest 以及匹配预期输出的功能,非常适合 pytest 插件的黑盒测试。
它试图尽可能地将测试运行与外部因素隔离,将当前工作目录修改为
path
以及初始化期间的环境变量。属性:
- 变量
path (Path) -- 用于创建文件/从中运行测试等的临时目录路径。
plugins -- 与一起使用的插件列表
parseconfig()
和runpytest()
. 最初这是一个空列表,但是插件可以添加到列表中。要添加到列表中的项的类型取决于使用它们的方法,有关详细信息,请参阅它们。
CLOSE_STDIN
alias of
object
- exception
TimeoutExpired
[源代码]
path
创建文件并执行 pytest 的临时目录。
make_hook_recorder
(pluginmanager: _pytest.config.PytestPluginManager ) → _pytest.pytester.HookRecorder [源代码]创建新的
HookRecorder
对于一个插件管理器。
makefile
(ext: str , *args: str , **kwargs: str ) → pathlib.Path [源代码]在测试目录中创建新文件。
- 参数
ext ( str ) -- 文件应使用的扩展名,包括点,例如
.py
.args -- 所有参数都被视为字符串,并使用换行符连接。结果将作为内容写入文件。文件名基于请求此 fixture 的测试函数。
kwargs -- 每个关键字都是文件的名称,而其值将作为文件的内容写入。
实例:
pytester.makefile(".txt", "line1", "line2") pytester.makefile(".ini", pytest="[pytest]\naddopts=-rs\n")
makeconftest
(source: str ) → pathlib.Path [源代码]写一个以 source 为内容的 compute.py 文件。
makeini
(source: str ) → pathlib.Path [源代码]写一个以 source 为内容的 tox.ini 文件。
makepyprojecttoml
(source: str ) → pathlib.Path [源代码]写一个 pyproject.toml 项目以 source 作为内容的文件。
6.0 新版功能.
makepyfile
(*args, **kwargs) → pathlib.Path [源代码]扩展名为.py 的.makefile()的快捷方式。
默认为扩展名为 .py 的测试名称,例如 test_foobar.py,覆盖现有文件。
实例:
def test_something(pytester): # Initial file is created test_something.py. pytester.makepyfile("foobar") # To create multiple files, pass kwargs accordingly. pytester.makepyfile(custom="foobar") # At this point, both 'test_something.py' & 'custom.py' exist in the test directory.
maketxtfile
(*args, **kwargs) → pathlib.Path [源代码]扩展名为.txt 的.makefile()的快捷方式。
默认为扩展名为 .txt 的测试名称,例如 test_foobar.txt 版,覆盖现有文件。
实例:
def test_something(pytester): # Initial file is created test_something.txt. pytester.maketxtfile("foobar") # To create multiple files, pass kwargs accordingly. pytester.maketxtfile(custom="foobar") # At this point, both 'test_something.txt' & 'custom.txt' exist in the test directory.
syspathinsert
(path: Optional[Union[ str , os.PathLike [ str ]]] = None) → None [源代码]将目录预先设置为 sys.path,默认为
tmpdir
.当该对象在每个测试结束时死亡时,此操作将自动撤消。
mkdir
(name: str ) → pathlib.Path [源代码]创建新的(子)目录。
mkpydir
(name: str ) → pathlib.Path [源代码]创建一个新的 python 包。
这将创建一个(子)目录,其中
__init__.py
文件,以便它被识别为 Python 包。
copy_example
(name: Optional[ str ] = None) → pathlib.Path [源代码]将文件从项目目录复制到 testdir。
- 参数
name ( str ) -- 要复制的文件的名称。
- 返回
复制目录的路径(内部
self.path
)
- class
Session
(*k, **kw) - exception
Failed
测试运行失败时发出停止信号。
- exception
Interrupted
发出测试运行中断的信号。
- for ... in
collect
() → Iterator[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] 返回此集合节点的子级(项和收集器)列表。
- classmethod
from_config
(config: _pytest.config.Config ) → _pytest.main.Session
- for ... in
genitems
(node: Union[_pytest.nodes.Item, _pytest.nodes.Collector]) → Iterator[_pytest.nodes.Item]
gethookproxy
(fspath: py._path.local.LocalPath)
isinitpath
(path: py._path.local.LocalPath) → bool
perform_collect
(args: Optional[Sequence[ str ]] = None, genitems: bool = True) → Sequence[Union[_pytest.nodes.Item, _pytest.nodes.Collector]]执行此会话的收集阶段。
默认情况下会调用此函数
pytest_collection
钩子实现;有关详细信息,请参阅该钩子的文档。出于测试目的,也可以直接调用Session
.此函数通常递归地将从会话收集的所有收集器扩展到它们的项,并且只返回项。出于测试目的,可以通过
genitems=False
,在这种情况下,返回值包含这些未展开的收集器,以及session.items
是空的。
pytest_collectreport
(report: Union[ _pytest.reports.TestReport , _pytest.reports.CollectReport ]) → None
pytest_collectstart
() → None
pytest_runtest_logreport
(report: Union[ _pytest.reports.TestReport , _pytest.reports.CollectReport ]) → None
- exception
getnode
(config: _pytest.config.Config , arg: Union[ str , os.PathLike [ str ]]) → Optional[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] [源代码]返回文件的集合节点。
- 参数
config ( _pytest.config.Config ) -- pytest 配置。看到了吗
parseconfig()
和parseconfigure()
为了创造它。arg (py.path.local) -- 文件的路径。
getpathnode
(path: Union[ str , os.PathLike [ str ]]) [源代码]返回文件的集合节点。
这就像
getnode()
但使用parseconfigure()
创建(配置的)pytest 配置实例。- 参数
path (py.path.local) -- 文件的路径。
genitems
(colitems: Sequence[Union[_pytest.nodes.Item, _pytest.nodes.Collector]]) → List[_pytest.nodes.Item] [源代码]从集合节点生成所有测试项。
这将递归到集合节点,并返回包含在其中的所有测试项的列表。
runitem
(source: str ) → Any [源代码]运行 test_func 项。
调用测试实例(包含测试方法的类)必须提供
.getrunner()
方法,该方法应返回可以为单个项运行测试协议的运行程序,例如_pytest.runner.runtestprotocol()
.
inline_runsource
(source: str , *cmdlineargs) → _pytest.pytester.HookRecorder [源代码]在进程中使用运行测试模块
pytest.main()
.此运行将 源 写入临时文件并运行
pytest.main()
在上面,返回HookRecorder
结果的实例。- 参数
source -- 测试模块的源代码。
cmdlineargs -- 任何要使用的额外命令行参数。
- 返回
HookRecorder
结果的实例。
inline_genitems
(*args) → Tuple[List[_pytest.nodes.Item], _pytest.pytester.HookRecorder ] [源代码]运行
pytest.main(['--collectonly'])
正在进行中。运行
pytest.main()
函数在测试进程内部运行所有 pytest,如inline_run()
,但返回所收集项的元组和HookRecorder
实例。
inline_run
(*args: Union[ str , os.PathLike [ str ]], plugins=(), no_reraise_ctrlc: bool = False) → _pytest.pytester.HookRecorder [源代码]运行
pytest.main()
过程中,返回一个钩子记录器。运行
pytest.main()
函数来运行测试进程内部的所有 pytest。这意味着它可以返回HookRecorder
从该运行中提供比通过匹配 stdout/stderr 可以完成的更详细结果的实例runpytest()
.- 参数
args -- 传递给命令行的参数
pytest.main()
.plugins -- 额外的插件实例
pytest.main()
实例应使用。no_reraise_ctrlc -- 通常,我们会从子进程中重设键盘中断。如果为 True,则捕获键盘中断异常。
- 返回
A
HookRecorder
实例。
runpytest_inprocess
(*args: Union[ str , os.PathLike [ str ]], **kwargs: Any) → _pytest.pytester.RunResult [源代码]返回进程内运行 pytest 的结果,提供类似于 self.runpytest()提供的接口。
runpytest
(*args: Union[ str , os.PathLike [ str ]], **kwargs: Any) → _pytest.pytester.RunResult [源代码]根据命令行选项--run pytest 在内联或子进程中运行 pytest,并返回
RunResult
.
parseconfig
(*args: Union[ str , os.PathLike [ str ]]) → _pytest.config.Config [源代码]从给定的命令行参数返回新的 pytest 配置实例。
这会调用 pytest.config 中的 pytest 引导代码来创建新的
_pytest.core.PluginManager
并调用 pytest 命令行分析钩子来创建一个新的_pytest.config.Config
实例。如果
plugins
已填充,它们应该是要向 PluginManager 注册的插件模块。
parseconfigure
(*args: Union[ str , os.PathLike [ str ]]) → _pytest.config.Config [源代码]返回新的 Pytest 配置配置实例。
返回新的
_pytest.config.Config
类实例parseconfig()
,但也调用 pytest_configure hook。
getitem
(source: str , funcname: str = 'test_func') → _pytest.nodes.Item [源代码]返回测试函数的测试项。
将源代码写入 python 文件,并在生成的模块上运行 pytest 的集合,返回请求的函数名的测试项。
- 参数
source -- 模块源。
funcname -- 要为其返回测试项的测试函数的名称。
getitems
(source: str ) → List[_pytest.nodes.Item] [源代码]返回从模块收集的所有测试项。
返回 Python 模块中包含的所有测试项,并将测试结果写入 Python 模块中。
getmodulecol
(source: Union[ str , pathlib.Path ], configargs=(), *, withinit: bool = False) [源代码]返回的模块收集节点
source
.写
source
使用文件makepyfile()
然后在上面运行 pytest 集合,返回测试模块的集合节点。- 参数
source -- 要收集的模块的源代码。
configargs -- 要传递给其他参数吗
parseconfigure()
.withinit -- 是否也要写
__init__.py
文件到同一目录,以确保它是一个包。
collect_by_name
(modcol: _pytest.nodes.Collector, name: str ) → Optional[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] [源代码]从模块集合中返回名称为的集合节点。
在模块集合节点中搜索与给定名称匹配的集合节点。
- 参数
modcol -- 模块集合节点;请参阅
getmodulecol()
.name -- 要返回的节点的名称。
popen
(cmdargs, stdout: Union[int, TextIO] = -1, stderr: Union[int, TextIO] = -1, stdin=<class 'object'>, **kw) [源代码]调用 Subprocess.popen。
电话子流程.Popen 确保当前工作目录在 PYTHONPATH 中。
你可能想用
run()
相反。
run
(*cmdargs: Union[str, os.PathLike[str]], timeout: Optional[float] = None, stdin=<class 'object'>) → _pytest.pytester.RunResult [源代码]用参数运行命令。
使用 Subprocess.Popen 运行进程,保存 stdout 和 stderr。
- 参数
cmdargs -- 要传递给的参数序列
subprocess.Popen()
,其中类似路径的对象被转换为str
自动地。timeout -- 以秒为单位的超时和提升时间
Pytester.TimeoutExpired
.stdin -- 可选标准输入。正在发送字节,关闭管道,否则将传递到
popen
.默认为CLOSE_STDIN
,即使用管道 (subprocess.PIPE
)那就结束了。
- 返回类型
runpython
(script) → _pytest.pytester.RunResult [源代码]使用 sys.executable 作为解释器运行 python 脚本。
- 返回类型
runpytest_subprocess
(*args, timeout: Optional[ float ] = None) → _pytest.pytester.RunResult [源代码]将 pytest 作为具有给定参数的子进程运行。
任何添加到
plugins
将使用添加列表-p
命令行选项。另外--basetemp
用于将任何临时文件和目录放在前缀为 runpytest- 的编号目录中,以避免与临时文件和目录的常规编号 pytest 位置冲突。- 参数
args -- 要传递给 pytest 子进程的参数序列。
timeout -- 以秒为单位的超时和提升时间
Pytester.TimeoutExpired
.
- 返回类型
- class
RunResult
[源代码] 运行命令的结果。
ret
: Union[ int , _pytest.config.ExitCode]返回值。
outlines
从 stdout 捕获的行的列表。
errlines
从 stderr 捕获的行的列表。
stdout
LineMatcher
标准输出。使用例如。
str(stdout)
重建标准输出,或通常使用的stdout.fnmatch_lines()
方法。
stderr
LineMatcher
对 stderr。
duration
持续时间(秒)。
parseoutcomes
() → Dict[ str , int ] [源代码]从分析测试过程产生的终端输出返回结果名词->计数的字典。
返回的名词总是复数形式:
======= 1 failed, 1 passed, 1 warning, 1 error in 0.13s ====
会回来的
{{"failed": 1, "passed": 1, "warnings": 1, "errors": 1}}
.
- class
LineMatcher
[源代码] 灵活匹配文本。
这是一个方便的类,用于测试像命令输出这样的大文本。
构造器获取一个没有尾随新行的行列表,即
text.splitlines()
.fnmatch_lines_random
(lines2: Sequence[ str ]) → None [源代码]检查输出中以任何顺序存在的行(使用
fnmatch.fnmatch()
)
re_match_lines_random
(lines2: Sequence[ str ]) → None [源代码]检查输出中以任何顺序存在的行(使用
re.match()
)
fnmatch_lines
(lines2: Sequence[ str ], *, consecutive: bool = False) → None [源代码]检查输出中存在的行(使用
fnmatch.fnmatch()
)参数是必须匹配并且可以使用 glob 通配符的行的列表。如果它们不匹配 pytest.失败()被调用。匹配和不匹配也显示为错误消息的一部分。
- 参数
lines2 -- 要匹配的字符串模式。
consecutive -- 连续匹配线条?
re_match_lines
(lines2: Sequence[ str ], *, consecutive: bool = False) → None [源代码]检查输出中存在的行(使用
re.match()
)参数是必须使用匹配的行的列表
re.match
. 如果它们不匹配,则调用 pytest.fail()。匹配和不匹配也显示为错误消息的一部分。
- 参数
lines2 -- 要匹配的字符串模式。
consecutive -- 连续匹配线条?
- class
HookRecorder
[源代码] 记录插件管理器中调用的所有挂钩。
这包装了插件管理器中的所有挂钩调用,在传播正常调用之前记录每个调用。
matchreport
(inamepart: str = '', names: Union[ str , Iterable[ str ]] = ('pytest_runtest_logreport', 'pytest_collectreport'), when: Optional[ str ] = None) → Union[ _pytest.reports.CollectReport , _pytest.reports.TestReport ] [源代码]返回虚线导入路径匹配的测试报告。
测试数据
相同的 pytester
,但是提供一个实例,该实例的方法返回遗留版本。 py.path.local
对象,而不是在适用的情况下。
新代码应避免使用 testdir
赞成 pytester
.
- final class
Testdir
[源代码] 类似
Pytester
,但是这个类使用遗留的 py.path.local 对象。All methods just forward to an internal
Pytester
instance, converting results topy.path.local
objects as necessary.CLOSE_STDIN
alias of
object
- exception
TimeoutExpired
- class
Session
(*k, **kw) - exception
Failed
测试运行失败时发出停止信号。
- exception
Interrupted
发出测试运行中断的信号。
- for ... in
collect
() → Iterator[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] 返回此集合节点的子级(项和收集器)列表。
- classmethod
from_config
(config: _pytest.config.Config ) → _pytest.main.Session
- for ... in
genitems
(node: Union[_pytest.nodes.Item, _pytest.nodes.Collector]) → Iterator[_pytest.nodes.Item]
gethookproxy
(fspath: py._path.local.LocalPath)
isinitpath
(path: py._path.local.LocalPath) → bool
perform_collect
(args: Optional[Sequence[ str ]] = None, genitems: bool = True) → Sequence[Union[_pytest.nodes.Item, _pytest.nodes.Collector]]执行此会话的收集阶段。
默认情况下会调用此函数
pytest_collection
钩子实现;有关详细信息,请参阅该钩子的文档。出于测试目的,也可以直接调用Session
.此函数通常递归地将从会话收集的所有收集器扩展到它们的项,并且只返回项。出于测试目的,可以通过
genitems=False
,在这种情况下,返回值包含这些未展开的收集器,以及session.items
是空的。
pytest_collectreport
(report: Union[ _pytest.reports.TestReport , _pytest.reports.CollectReport ]) → None
pytest_collectstart
() → None
pytest_runtest_logreport
(report: Union[ _pytest.reports.TestReport , _pytest.reports.CollectReport ]) → None
- exception
tmpdir
执行测试的临时目录。
make_hook_recorder
(pluginmanager) → _pytest.pytester.HookRecorder [源代码]
chdir
() → None [源代码]见
Pytester.chdir()
.
makefile
(ext, *args, **kwargs) → py._path.local.LocalPath [源代码]
makeconftest
(source) → py._path.local.LocalPath [源代码]
makeini
(source) → py._path.local.LocalPath [源代码]
makepyprojecttoml
(source) → py._path.local.LocalPath [源代码]
makepyfile
(*args, **kwargs) → py._path.local.LocalPath [源代码]
maketxtfile
(*args, **kwargs) → py._path.local.LocalPath [源代码]
mkdir
(name) → py._path.local.LocalPath [源代码]见
Pytester.mkdir()
.
mkpydir
(name) → py._path.local.LocalPath [源代码]
copy_example
(name=None) → py._path.local.LocalPath [源代码]
getnode
(config: _pytest.config.Config , arg) → Optional[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] [源代码]
getpathnode
(path) [源代码]
genitems
(colitems: List[Union[_pytest.nodes.Item, _pytest.nodes.Collector]]) → List[_pytest.nodes.Item] [源代码]
runitem
(source) [源代码]
inline_runsource
(source, *cmdlineargs) [源代码]
inline_genitems
(*args) [源代码]
runpytest_inprocess
(*args, **kwargs) → _pytest.pytester.RunResult [源代码]
runpytest
(*args, **kwargs) → _pytest.pytester.RunResult [源代码]
parseconfig
(*args) → _pytest.config.Config [源代码]
parseconfigure
(*args) → _pytest.config.Config [源代码]
getitem
(source, funcname='test_func') [源代码]
getitems
(source) [源代码]
getmodulecol
(source, configargs=(), withinit=False) [源代码]
collect_by_name
(modcol: _pytest.nodes.Collector, name: str ) → Optional[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] [源代码]
popen
(cmdargs, stdout: Union[int, TextIO] = -1, stderr: Union[int, TextIO] = -1, stdin=<class 'object'>, **kw) [源代码]见
Pytester.popen()
.
run
(*cmdargs, timeout=None, stdin=<class 'object'>) → _pytest.pytester.RunResult [源代码]见
Pytester.run()
.
runpython
(script) → _pytest.pytester.RunResult [源代码]
runpython_c
(command) [源代码]
runpytest_subprocess
(*args, timeout=None) → _pytest.pytester.RunResult [源代码]
spawn
(cmd: str , expect_timeout: float = 10.0) → pexpect.spawn [源代码]见
Pytester.spawn()
.
重述
教程 : 使用警告功能断言警告
recwarn
() [源代码]返回 A
WarningsRecorder
记录测试函数发出的所有警告的实例。有关警告类别的信息,请参阅 http://docs.python.org/library/warnings.html。
- class
WarningsRecorder
[源代码] 要记录的上下文管理器引发了警告。
改编自
warnings.catch_warnings
.list
记录的警告列表。
pop
(cls: Type[Warning] = <class 'Warning'>) → warnings.WarningMessage [源代码]弹出第一个记录的警告,如果不存在则引发异常。
每个记录的警告都是 warnings.WarningMessage
.
注解
DeprecationWarning
和 PendingDeprecationWarning
被区别对待;见 确保代码触发拒绝警告 .
tmp_path
教程 : 临时目录和文件
tmp_path
() [源代码]返回一个临时目录路径对象,该对象对于每个测试函数调用都是唯一的,创建为基本临时目录的子目录。
默认情况下,每个测试会话都会创建一个新的基本临时目录,并在 3 个会话之后删除旧的基本目录,以帮助调试。如果
--basetemp
则它将在每个会话中被清除。看见 默认的基本临时目录 .返回的对象是
pathlib.Path
对象。
tmp_path_factory
tmp_path_factory
是的实例 TempPathFactory
:
- final class
TempPathFactory
[源代码] 公共基本临时目录下临时目录的工厂。
基目录可以使用
--basetemp
选择权。
tmpdir
教程 : 临时目录和文件
tmpdir
() [源代码]返回一个临时目录路径对象,该对象对于每个测试函数调用都是唯一的,创建为基本临时目录的子目录。
默认情况下,每个测试会话都会创建一个新的基本临时目录,并在 3 个会话之后删除旧的基本目录,以帮助调试。如果
--basetemp
则它将在每个会话中被清除。看见 默认的基本临时目录 .返回的对象是 py.path.local 路径对象。
tmpdir_factory
教程 : 'tmpdir_factory'夹具
tmp_path_factory
是的实例 TempdirFactory
:
- final class
TempdirFactory
[源代码] 实现以下功能的向后可压缩性包装器 :class: `` py.path.local`
用于 :class:``TempPathFactory
'.
钩子
教程 : 编写插件 .
引用所有可以通过 conftest.py files 和 plugins .
引导挂钩
引导挂钩调用了足够早注册的插件(内部插件和安装工具插件)。
pytest_load_initial_conftests
(early_config: Config, parser: Parser, args: List[ str ]) → None [源代码]调用以在命令行选项解析之前实现初始 conftest 文件的加载。
注解
这个钩子不用了
conftest.py
文件,仅用于安装工具插件。- 参数
early_config ( _pytest.config.Config ) -- pytest 配置对象。
args (List[ str ]) -- 在命令行上传递的参数。
parser ( _pytest.config.argparsing.Parser ) -- 添加命令行选项。
pytest_cmdline_preparse
(config: Config, args: List[ str ]) → None [源代码]( 已弃用 )在选项分析之前修改命令行参数。
此挂钩被视为已弃用,将在将来的 pytest 版本中删除。考虑使用
pytest_load_initial_conftests()
相反。注解
这个钩子不用了
conftest.py
文件,仅用于安装工具插件。- 参数
config ( _pytest.config.Config ) -- pytest 配置对象。
args (List[ str ]) -- 在命令行上传递的参数。
pytest_cmdline_parse
(pluginmanager: PytestPluginManager, args: List[ str ]) → Optional[Config] [源代码]返回初始化的配置对象,解析指定的参数。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
注解
仅对传递给
plugins
当使用时 pytest.main 执行进程内测试运行。- 参数
pluginmanager ( _pytest.config.PytestPluginManager ) -- Pytest 插件管理器。
args (List[ str ]) -- 在命令行上传递的参数列表。
pytest_cmdline_main
(config: Config) → Optional[Union[ExitCode, int ]] [源代码]调用以执行主命令行操作。默认实现将调用 configure hooks 和 runtestu mainloop。
注解
这个钩子不用了
conftest.py
文件,仅用于安装工具插件。在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
- 参数
config ( _pytest.config.Config ) -- pytest 配置对象。
初始化挂钩
为插件和 conftest.py
文件夹。
pytest_addoption
(parser: Parser, pluginmanager: PytestPluginManager) → None [源代码]注册 argparse 样式选项和 ini 样式配置值,在测试运行开始时调用一次。
注解
此功能只能在插件或
conftest.py
由于 pytest discovers plugins during startup .- 参数
parser ( _pytest.config.argparsing.Parser ) -- 要添加命令行选项,请调用
parser.addoption(...)
. 要添加 ini 文件值,请调用parser.addini(...)
.pluginmanager ( _pytest.config.PytestPluginManager ) -- pytest 插件管理器,可用于安装
hookspec()
的或hookimpl()
,并允许一个插件调用另一个插件的钩子来更改添加命令行选项的方式。
以后可以通过
config
对象,分别为:config.getoption(name)
检索命令行选项的值。config.getini(name)
从 ini 样式文件中检索值。
配置对象通过
.config
属性或可以作为pytestconfig
固定装置。注解
这个钩子与
hookwrapper=True
.
pytest_addhooks
(pluginmanager: PytestPluginManager) → None [源代码]在插件注册时调用,以允许通过调用
pluginmanager.add_hookspecs(module_or_class, prefix)
.- 参数
pluginmanager ( _pytest.config.PytestPluginManager ) -- pytest 插件管理器。
注解
这个钩子与
hookwrapper=True
.
pytest_configure
(config: Config) → None [源代码]允许插件和 conftest 文件执行初始配置。
在解析命令行选项之后,会为每个插件和初始 conftest 文件调用这个钩子。
之后,在导入其他 conftest 文件时调用钩子。
注解
这个钩子与
hookwrapper=True
.- 参数
config ( _pytest.config.Config ) -- pytest 配置对象。
pytest_unconfigure
(config: Config) → None [源代码]在退出测试进程之前调用。
- 参数
config ( _pytest.config.Config ) -- pytest 配置对象。
pytest_sessionstart
(session: Session) → None [源代码]在
Session
对象已创建,在执行收集和进入运行测试循环之前。- 参数
session ( pytest.Session ) -- pytest 会话对象。
pytest_sessionfinish
(session: Session, exitstatus: Union[ int , ExitCode]) → None [源代码]在整个测试运行完成后,在将退出状态返回到系统之前调用。
- 参数
session ( pytest.Session ) -- pytest 会话对象。
exitstatus ( int ) -- pytest 将返回到系统的状态。
pytest_plugin_registered
(plugin: _PluggyPlugin, manager: PytestPluginManager) → None [源代码]注册了一个新的 pytest 插件。
- 参数
plugin -- 插件模块或实例。
manager ( _pytest.config.PytestPluginManager ) -- pytest 插件管理器。
注解
这个钩子与
hookwrapper=True
.
收集挂钩
pytest
调用以下挂钩以收集文件和目录:
pytest_collection
(session: Session) → Optional[ object ] [源代码]为给定会话执行收集阶段。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 . 不使用返回值,但只会停止进一步的处理。
默认的收集阶段是这样的(有关完整的详细信息,请参见各个钩子):
从开始
session
作为初始收集器:
pytest_collectstart(collector)
report = pytest_make_collect_report(collector)
pytest_exception_interact(collector, call, report)
如果发生交互异常对于每个收集的节点:
如果是一个项目,
pytest_itemcollected(item)
如果是收集器,则递归到它。
pytest_collectreport(report)
pytest_collection_modifyitems(session, config, items)
pytest_deselected(items)
对于任何取消选择的项目(可以多次调用)
pytest_collection_finish(session)
集合
session.items
到收集的项目列表中集合
session.testscollected
收集到的项目数
您可以实现这个钩子来只在收集之前执行一些操作,例如终端插件使用它来开始显示收集计数器(并返回
None
)- 参数
session ( pytest.Session ) -- pytest 会话对象。
pytest_ignore_collect
(path: py._path.local.LocalPath, config: Config) → Optional[ bool ] [源代码]正在考虑返回 True 以阻止此集合。
在调用更具体的钩子之前,将查询所有文件和目录的钩子。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
- 参数
path (py.path.local) -- 分析的路径。
config ( _pytest.config.Config ) -- pytest 配置对象。
pytest_collect_file
(path: py._path.local.LocalPath, parent: Collector) → Optional[Collector] [源代码]为给定路径创建一个收集器,如果不相关,则不创建收集器。
新节点需要具有指定的
parent
作为父母。- 参数
path (py.path.local) -- 收集的路径。
pytest_pycollect_makemodule
(path: py._path.local.LocalPath, parent) → Optional[Module] [源代码]返回给定路径的模块收集器或无。
将为每个匹配的测试模块路径调用此钩子。如果要为与测试模块不匹配的文件创建测试模块,则需要使用 pytest_collect_file 钩子。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
- 参数
path (py.path.local) -- 要收集的模块的路径。
为了影响 Python 模块中对象的集合,可以使用以下钩子:
pytest_pycollect_makeitem
(collector: PyCollector, name: str , obj: object ) → Union[ None , Item, Collector, List[Union[Item, Collector]]] [源代码]返回模块中 Python 对象的自定义项/收集器,或无。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
pytest_make_parametrize_id
(config: Config, val: object , argname: str ) → Optional[ str ] [源代码]返回给定的用户友好的字符串表示形式
val
将由@pytest.mark.parametrize 打电话,如果钩子不知道val
.参数名称可用作
argname
如果需要的话。在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
- 参数
config ( _pytest.config.Config ) -- pytest 配置对象。
val -- 参数化值。
argname ( str ) -- pytest 生成的自动参数名。
收集完成后,您可以修改项目顺序、删除或修改测试项目:
pytest_collection_modifyitems
(session: Session, config: Config, items: List[Item]) → None [源代码]在执行收集后调用。可以过滤或重新排序。
- 参数
session ( pytest.Session ) -- pytest 会话对象。
config ( _pytest.config.Config ) -- pytest 配置对象。
items (List[ pytest.Item ]) -- 项目对象列表。
注解
如果此挂接是在 conftest.py
文件时,它始终接收所有收集的项,而不仅仅是 conftest.py
它在哪里实施。
pytest_collection_finish
(session: Session) → None [源代码]在执行和修改收集后调用。
- 参数
session ( pytest.Session ) -- pytest 会话对象。
测试运行(运行测试)挂钩
所有与运行测试相关的挂钩都将收到 pytest.Item
对象。
pytest_runtestloop
(session: Session) → Optional[ object ] [源代码]执行主运行测试循环(在收集完成后)。
默认的钩子实现对会话中收集的所有项执行 runtest 协议 (
session.items
),除非收集失败或collectonly
设置了 pytest 选项。如果在任何时候
pytest.exit()
调用时,循环立即终止。如果在任何时候
session.shouldfail
或session.shouldstop
,则在当前项的 runtest 协议完成后终止循环。- 参数
session ( pytest.Session ) -- pytest 会话对象。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 . 不使用返回值,但只会停止进一步的处理。
pytest_runtest_protocol
(item: Item, nextitem: Optional[Item]) → Optional[ object ] [源代码]对单个测试项执行 runtest 协议。
默认的 runtest 协议如下(有关完整的详细信息,请参见各个钩子):
pytest_runtest_logstart(nodeid, location)
- 设置阶段:
call = pytest_runtest_setup(item)
(包裹在CallInfo(when="setup")
)report = pytest_runtest_makereport(item, call)
pytest_runtest_logreport(report)
pytest_exception_interact(call, report)
如果发生交互异常
- 调用阶段,如果设置通过并且
setuponly
未设置 pytest 选项: call = pytest_runtest_call(item)
(包裹在CallInfo(when="call")
)report = pytest_runtest_makereport(item, call)
pytest_runtest_logreport(report)
pytest_exception_interact(call, report)
如果发生交互异常
- 调用阶段,如果设置通过并且
- 拆卸阶段:
call = pytest_runtest_teardown(item, nextitem)
(包裹在CallInfo(when="teardown")
)report = pytest_runtest_makereport(item, call)
pytest_runtest_logreport(report)
pytest_exception_interact(call, report)
如果发生交互异常
pytest_runtest_logfinish(nodeid, location)
- 参数
item -- 对其执行 runtest 协议的测试项。
nextitem -- 预定的下一个测试项目(或者没有,如果这是结束我的朋友)。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 . 不使用返回值,但只会停止进一步的处理。
pytest_runtest_logstart
(nodeid: str , location: Tuple[ str , Optional[ int ], str ]) → None [源代码]在为单个项运行 runtest 协议开始时调用。
见
pytest_runtest_protocol()
有关 runtest 协议的说明。- 参数
nodeid ( str ) -- 项的完整节点 ID。
location -- 一个元组
(filename, lineno, testname)
.
pytest_runtest_logfinish
(nodeid: str , location: Tuple[ str , Optional[ int ], str ]) → None [源代码]在运行单个项的 runtest 协议结束时调用。
见
pytest_runtest_protocol()
有关 runtest 协议的说明。- 参数
nodeid ( str ) -- 项的完整节点 ID。
location -- 一个元组
(filename, lineno, testname)
.
pytest_runtest_setup
(item: Item) → None [源代码]调用以执行测试项的设置阶段。
默认实现运行
setup()
在item
以及它的所有父对象(尚未设置)。这包括获取项目所需的固定装置值(尚未获得)。
pytest_runtest_teardown
(item: Item, nextitem: Optional[Item]) → None [源代码]调用以执行测试项的拆卸阶段。
默认实现运行终结器和调用
teardown()
在item
以及它所有的父母(需要拆掉)。这包括运行项目所需的固定装置的拆卸阶段(如果它们超出范围)。- 参数
nextitem -- 计划作为下一个测试项目(如果没有计划进一步的测试项目,则无)。此参数可用于执行精确的拆分,即调用足够的终结器,以便 nextitem 只需调用设置函数。
pytest_runtest_makereport
(item: Item, call: CallInfo[ None ]) → Optional[TestReport] [源代码]调用以创建
_pytest.reports.TestReport
对于测试项的每个安装、调用和拆卸 runtest 阶段。见
pytest_runtest_protocol()
有关 runtest 协议的说明。- 参数
call (CallInfo[ None ]) -- 这个
CallInfo
对于这个阶段。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
为了更深入地了解,您可以查看这些钩子的默认实现 _pytest.runner
也可能在 _pytest.pdb
它与 _pytest.capture
以及它的输入/输出捕获,以便在测试失败时立即进入交互式调试。
pytest_pyfunc_call
(pyfuncitem: Function) → Optional[ object ] [源代码]调用底层测试函数。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
报告挂钩
与会话相关的报告挂钩:
pytest_make_collect_report
(collector: Collector) → Optional[CollectReport] [源代码]表演
collector.collect()
并返回一个 CollectReport。在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
pytest_report_header
(config: Config, startdir: py._path.local.LocalPath) → Union[ str , List[ str ]] [源代码]返回要显示为终端报告标题信息的字符串或字符串列表。
- 参数
config ( _pytest.config.Config ) -- pytest 配置对象。
startdir (py.path.local) -- 起始方向。
注解
插件返回的行显示在它之前运行的插件的行之前。如果要先显示行,请使用 trylast=True .
注解
此功能只能在插件或
conftest.py
由于 pytest discovers plugins during startup .
pytest_report_collectionfinish
(config: Config, startdir: py._path.local.LocalPath, items: Sequence[Item]) → Union[ str , List[ str ]] [源代码]返回要在成功完成收集后显示的字符串或字符串列表。
这些字符串将显示在标准的 收集的 X 项 消息之后。
3.2 新版功能.
- 参数
config ( _pytest.config.Config ) -- pytest 配置对象。
startdir (py.path.local) -- 起始方向。
items -- 将要执行的 pytest 项的列表;不应修改此列表。
注解
插件返回的行显示在它之前运行的插件的行之前。如果要先显示行,请使用 trylast=True .
pytest_report_teststatus
(report: Union[CollectReport, TestReport], config: Config) → Tuple[ str , str , Union[ str , Mapping[ str , bool ]]] [源代码]返回结果类别,状态报告的短字母和详细单词。
结果类别是对结果进行计数的类别,例如 通过 、 跳过 、 错误 或空字符串。
在测试过程中会显示短字母,例如 . 、 s 、 E 或空字符串。
在详细模式下,随着测试的进行,将显示详细单词,例如 PASSED 、 SKIPPED 、 ERROR 或空字符串。
pytest 可以根据报告结果隐式地设置这些样式。例如,要提供显式样式,请返回详细单词的元组
"rerun", "R", ("RERUN", {{"yellow": True}})
.- 参数
report -- 要返回其状态的报表对象。
config ( _pytest.config.Config ) -- pytest 配置对象。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
pytest_terminal_summary
(terminalreporter: TerminalReporter, exitstatus: ExitCode, config: Config) → None [源代码]在终端摘要报告中添加一节。
- 参数
terminalreporter (_pytest.terminal.TerminalReporter) -- 内部终端报告器对象。
exitstatus ( int ) -- 将向操作系统报告的退出状态。
config ( _pytest.config.Config ) -- pytest 配置对象。
4.2 新版功能: 这个
config
参数。
pytest_fixture_setup
(fixturedef: FixtureDef[Any], request: SubRequest) → Optional[ object ] [源代码]执行夹具设置。
- 返回
fixture 函数调用的返回值。
在第一个非 无 结果处停止,请参见 第一个结果:在第一个非无结果处停止 .
注解
如果 fixture 函数返回 none,则将根据 第一个结果:在第一个非无结果处停止 选择权。
pytest_fixture_post_finalizer
(fixturedef: FixtureDef[Any], request: SubRequest) → None [源代码]在 fixture teardown 之后,但在清除缓存之前调用,因此 fixture 结果
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 ]]) → None [源代码]( 已弃用 )处理由内部 pytest warnings 插件捕获的警告。
6.0 版后已移除.
这个钩子被认为是不推荐使用的,将在将来的 pytest 版本中删除。使用
pytest_warning_recorded()
相反。- 参数
warning_message (warnings.WarningMessage) -- 捕获的警告。这是由
warnings.catch_warnings()
,并包含与的参数相同的属性warnings.showwarning()
.when ( str ) -- 指示捕获警告的时间。可能值: *
"config"
: during pytest configuration/initialization stage. *"collect"
:在测试收集期间。*"runtest"
:测试执行期间。item (pytest.Item|None) -- 如果
when
是"runtest"
,否则None
.location ( tuple ) -- 如果可用,则保存有关捕获的警告(文件名、行号、函数)的执行上下文的信息。
function
当执行上下文在模块级别时,计算结果为<module>。
pytest_warning_recorded
(warning_message: warnings.WarningMessage, when: Literal['config', 'collect', 'runtest'], nodeid: str , location: Optional[Tuple[ str , int , str ]]) → None [源代码]处理内部 pytest warnings 插件捕获的警告。
- 参数
warning_message (warnings.WarningMessage) -- 捕获的警告。这是由
warnings.catch_warnings()
,并包含与的参数相同的属性warnings.showwarning()
.when ( str ) -- 指示捕获警告的时间。可能值: *
"config"
: during pytest configuration/initialization stage. *"collect"
:在测试收集期间。*"runtest"
:测试执行期间。nodeid ( str ) -- 项目的完整 id。
location (tuple|None) -- 如果可用,则保存有关捕获的警告(文件名、行号、函数)的执行上下文的信息。
function
当执行上下文在模块级别时,计算结果为<module>。
6.0 新版功能.
用于报告测试执行的中央挂钩:
pytest_runtest_logreport
(report: TestReport) → None [源代码]处理
_pytest.reports.TestReport
为项目的每个安装、调用和拆卸运行测试阶段生成。见
pytest_runtest_protocol()
有关 runtest 协议的说明。
断言相关挂钩:
pytest_assertrepr_compare
(config: Config, op: str , left: object , right: object ) → Optional[List[ str ]] [源代码]返回失败的断言表达式中比较的说明。
如果没有自定义解释,则返回 None,否则返回字符串列表。字符串将由换行符连接,但任何换行符 in 字符串将被转义。请注意,除第一行外,所有行都将稍微缩进,其目的是将第一行作为摘要。
- 参数
config ( _pytest.config.Config ) -- pytest 配置对象。
pytest_assertion_pass
(item: Item, lineno: int , orig: str , expl: str ) → None [源代码](实验性) 每当断言通过时调用。
5.0 新版功能.
使用这个钩子在传递断言之后进行一些处理。原始断言信息可在
orig
字符串和 pytest 自省断言信息可在expl
字符串。此钩子必须由
enable_assertion_pass_hook
ini 文件选项:[pytest] enable_assertion_pass_hook=true
你需要 清理.pyc 启用此选项时,项目目录和解释器库中的文件,因为将需要重新编写断言。
- 参数
item ( pytest.Item ) -- 当前测试的 pytest item 对象。
lineno ( int ) -- assert 语句的行号。
orig ( str ) -- 带有原始断言的字符串。
expl ( str ) -- 带有 assert 解释的字符串。
注解
这个钩子是 实验的 ,因此在将来的 pytest 版本中,可能会在没有警告的情况下更改/删除其参数甚至钩子本身。
如果你觉得这个钩子有用,请在某个问题上分享你的反馈。
调试/交互挂钩
很少有钩子可用于特殊报告或交互,但有例外:
pytest_internalerror
(excrepr: ExceptionRepr, excinfo: ExceptionInfo[ BaseException ]) → Optional[ bool ] [源代码]要求内部错误。
Return True 可禁止将 INTERNALERROR 消息直接打印到的回退处理系统标准.
pytest_keyboard_interrupt
(excinfo: ExceptionInfo[Union[ KeyboardInterrupt , Exit]]) → None [源代码]要求键盘中断。
pytest_exception_interact
(node: Union[Item, Collector], call: CallInfo[Any], report: Union[CollectReport, TestReport]) → None [源代码]当引发可交互处理的异常时调用。
可在收集期间调用(请参阅
pytest_make_collect_report()
),在这种情况下report
是一个_pytest.reports.CollectReport
.在项目的运行测试期间调用(请参阅
pytest_runtest_protocol()
),在这种情况下report
是一个_pytest.reports.TestReport
.如果引发的异常是内部异常,则不调用此钩子
skip.Exception
.
pytest_enter_pdb
(config: Config, pdb: pdb.Pdb ) → None [源代码]号召 pdb.set_跟踪().
可以被插件用来在 python 调试器进入交互模式之前执行特殊操作。
- 参数
config ( _pytest.config.Config ) -- pytest 配置对象。
pdb ( pdb.Pdb ) -- Pdb 实例。
物体
完全引用可从访问的对象 fixtures 或 hooks .
CallInfo
等级
- class
Class
[源代码] 基类:
_pytest.python.PyCollector
试验方法收集器。
- classmethod
from_parent
(parent, *, name, obj=None) [源代码] 公共构造函数。
collect
() → Iterable[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] [源代码]返回此集合节点的子级(项和收集器)列表。
- classmethod
收藏家
- class
Collector
[源代码] 收集器实例通过 collect()创建子级,从而迭代地构建树。
collect
() → Iterable[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] [源代码]返回此集合节点的子级(项和收集器)列表。
repr_failure
(excinfo: _pytest._code.code.ExceptionInfo[ BaseException ]) → Union[ str , _pytest._code.code.TerminalRepr] [源代码]返回失败的集合。
- 参数
excinfo -- 失败的异常信息。
CollectReport
- final class
CollectReport
[源代码] 基类:
_pytest.reports.BaseReport
集合报表对象。
nodeid
: str规范化集合节点 ID。
outcome
测试结果,总是 通过 、 失败 、 跳过 之一。
longrepr
: Union[ None , _pytest._code.code.ExceptionInfo[ BaseException ], Tuple[ str , int , str ], str , _pytest._code.code.TerminalRepr]无或故障表示。
result
收集的项和集合节点。
caplog
如果启用了日志捕获,则返回捕获的日志行。
3.5 新版功能.
capstderr
如果启用了捕获,则从 stderr 返回捕获的文本。
3.0 新版功能.
capstdout
如果启用了捕获,则从 stdout 返回捕获的文本。
3.0 新版功能.
count_towards_summary
实验 该报告是否应计入测试结束时显示的总数: 1 个通过,1 个失败,等等 。
注解
考虑到该功能 实验的 ,因此请注意,即使在补丁发布中,它也会发生变化。
head_line
实验 此报告的 longrepr 输出中显示的标题行,通常在失败期间的回溯表示期间:
________ Test.foo ________
在上面的例子中,head_行是 test.foo 。
注解
考虑到该功能 实验的 ,因此请注意,即使在补丁发布中,它也会发生变化。
longreprtext
只读属性,返回
longrepr
.3.0 新版功能.
配置
- final class
Config
[源代码] 访问配置值、pluginmanager 和 plugin hooks。
- 参数
pluginmanager ( PytestPluginManager ) --
invocation_params ( InvocationParams ) -- 对象包含有关
pytest.main()
召唤。
- final class
InvocationParams
(args, plugins: Optional[Sequence[Union[ str , object ]]], dir: pathlib.Path ) [源代码] 保存期间传递的参数
pytest.main()
.对象属性是只读的。
5.1 新版功能.
注解
请注意,环境变量
PYTEST_ADDOPTS
以及addopts
ini 选项由 pytest 处理,不包含在args
属性。插件访问
InvocationParams
必须意识到这一点。args
传递给的命令行参数
pytest.main()
.- 类型
元组 [str。。。]
plugins
额外的插件,可能是
None
.- 类型
可选的 [序列[Union[str,plugin] ] ]
dir
从哪个目录
pytest.main()
已调用。
option
作为属性访问命令行选项。
invocation_params
调用 pytest 所用的参数。
pluginmanager
插件管理器处理插件注册和钩子调用。
invocation_dir
从中调用 pytest 的目录。
喜欢使用
invocation_params.dir
,这是一个pathlib.Path
.- 类型
py.path.local
rootpath
通往那条路的路 rootdir .
6.1 新版功能.
rootdir
通往那条路的路 rootdir .
喜欢使用
rootpath
,这是一个pathlib.Path
.- 类型
py.path.local
inipath
通往那条路的路 configfile .
- 类型
Optional[ pathlib.Path ]
6.1 新版功能.
inifile
通往那条路的路 configfile .
喜欢使用
inipath
,这是一个pathlib.Path
.- 类型
Optional[py.path.local]
add_cleanup
(func: Callable[], None ]) → None [源代码]添加一个在配置对象停止使用时要调用的函数(通常是与 pytest_unconfigure 并置)。
- classmethod
fromdictargs
(option_dict, args) → _pytest.config.Config [源代码] 可用于子进程的构造函数。
- for ... in
pytest_collection
() → Generator[ None , None , None ] [源代码] 收集完成后验证无效的 ini 键,因此我们考虑到延迟加载 conftest 文件所添加的选项。
issue_config_time_warning
(warning: Warning , stacklevel: int ) → None [源代码]在 配置 阶段发出并处理警告。
期间
pytest_configure
我们无法使用catch_warnings_for_item
函数,因为不可能有钩子包装pytest_configure
.此函数主要用于需要在
pytest_configure
(或类似阶段)。- 参数
warning -- 警告实例。
stacklevel -- 堆栈级别转发到警告。警告.
addinivalue_line
(name: str , line: str ) → None [源代码]在 ini 文件选项中添加一行。该选项必须已声明,但可能尚未设置,在这种情况下,该行将成为其值中的第一行。
getini
(name: str ) [源代码]从返回配置值 ini file .
如果指定的名称尚未通过
parser.addini
调用(通常来自插件),会引发 ValueError。
getoption
(name: str, default=<NOTSET>, skip: bool = False) [源代码]返回命令行选项值。
- 参数
name -- 选项的名称。您也可以指定文字
--OPT
选项而不是 dest 选项名。default -- 如果不存在该名称的选项,则为默认值。
skip -- 如果是真的,提高 pytest.跳过如果选项不存在或没有值。
ExceptionInfo
- final class
ExceptionInfo
(excinfo: Optional[Tuple[Type[_E], _E, traceback]], striptext: str = '', traceback: Optional[_pytest._code.code.Traceback] = None) [源代码] 包裹系统执行信息()对象,并提供导航回溯的帮助。
- classmethod
from_exc_info
(exc_info: Tuple[Type[_E], _E, traceback ], exprinfo: Optional[ str ] = None) → _pytest._code.code.ExceptionInfo[_E] [源代码] 返回现有 excu info 元组的 ExceptionInfo。
警告
实验原料药
- 参数
exprinfo -- 一个文本字符串,帮助确定是否应该剥离
AssertionError
从输出。默认为异常消息/``uu str_uu3;()`
。
- classmethod
from_current
(exprinfo: Optional[ str ] = None) → _pytest._code.code.ExceptionInfo[ BaseException ] [源代码] 返回与当前回溯匹配的 ExceptionInfo。
警告
实验原料药
- 参数
exprinfo -- 一个文本字符串,帮助确定是否应该剥离
AssertionError
从输出。默认为异常消息/``uu str_uu3;()`
。
- classmethod
for_later
() → _pytest._code.code.ExceptionInfo[_E] [源代码] 返回未填充的 ExceptionInfo。
fill_unfilled
(exc_info: Tuple[Type[_E], _E, traceback ]) → None [源代码]填充用创建的未填充的 ExceptionInfo
for_later()
.
type
异常类。
value
异常值。
tb
异常原始回溯。
typename
异常的类型名称。
traceback
回溯。
exconly
(tryshort: bool = False) → str [源代码]以字符串形式返回异常。
当 tryshort 解析为 True,并且异常是一个_pytest.u code.u AssertionError 时,只返回异常表示的实际异常部分(因此 AssertionError: 从一开始就被删除)。
errisinstance
(exc: Union[Type[ BaseException ], Tuple[Type[ BaseException ], ...]]) → bool [源代码]如果异常是 exc 的实例,则返回 True。
考虑使用
isinstance(excinfo.value, exc)
相反。
getrepr
(showlocals: bool = False, style: _TracebackStyle = 'long', abspath: bool = False, tbfilter: bool = True, funcargs: bool = False, truncate_locals: bool = True, chain: bool = True) → Union[ReprExceptionInfo, ExceptionChainRepr] [源代码]返回此异常信息的 str()表形式。
- 参数
showlocals ( bool ) -- 显示每个回溯条目的局部变量。忽略如果
style=="native"
.abspath ( bool ) -- 如果路径应更改为绝对路径或保持不变。
tbfilter ( bool ) -- 隐藏包含局部变量的条目
__tracebackhide__==True
. 忽略如果style=="native"
.funcargs ( bool ) -- 每个追溯条目显示装置( funcargs 用于遗留目的)。
truncate_locals ( bool ) -- 用
showlocals==True
,确保局部变量可以安全地表示为字符串。chain ( bool ) -- 应该显示 python3 中的 If-chained 异常。
在 3.9 版更改: 增加了
chain
参数。
match
(regexp: Union[ str , Pattern[ str ]]) → Literal[True] [源代码]检查正则表达式
regexp
使用匹配异常的字符串表示形式re.search()
.如果匹配
True
返回,否则返回AssertionError
提高了。
- classmethod
ExitCode
- final class
ExitCode
(value) [源代码] 通过 pytest 对有效的退出代码进行编码。
目前用户和插件也可能提供其他退出代码。
5.0 新版功能.
OK
= 0测试通过。
TESTS_FAILED
= 1测试失败。
INTERRUPTED
= 2pytest 被中断。
INTERNAL_ERROR
= 3一个内部错误挡住了去路。
USAGE_ERROR
= 4pytest 被滥用了。
NO_TESTS_COLLECTED
= 5pytest 找不到测试。
文件
- class
File
[源代码] 用于从文件收集测试的基类。
FixtureDef
- final class
FixtureDef
[源代码] 基类:
Generic
[_pytest.fixtures._FixtureValue
]工厂定义的容器。
FSCollector
- class
FSCollector
[源代码] 基类:
_pytest.nodes.Collector
- classmethod
from_parent
(parent, *, fspath, **kw) [源代码] 公共构造函数。
- classmethod
功能
- class
Function
[源代码] 基类:
_pytest.python.PyobjMixin
,_pytest.nodes.Item
负责设置和执行 Python 测试函数的项。
- 参数名称:
完整的函数名,包括任何像参数化添加的装饰 (
my_func[my_param]
)- 参数父级:
父节点。
- 参数配置:
pytest 配置对象。
- 参数调用规范:
如果给定,则此 is 函数已参数化,并且 callspec 包含有关参数化的元信息。
- 参数 callobj:
如果给定,则为调用函数时将调用的对象,否则将从
parent
使用originalname
.- 参数关键字:
为 -k 匹配绑定到函数对象的关键字。
- 参数会话:
pytest 会话对象。
- 参数 fixtureinfo:
夹具信息已在此夹具节点解析。。
- 参数原始名称:
用于访问基础函数对象的属性名。默认为
name
. 如果名称与原始名称不同,请设置此选项,例如,当名称包含参数化添加的装饰时 (my_func[my_param]
)
originalname
原始函数名,没有任何修饰(例如参数化添加了
"[...]"
函数名后缀),用于从parent
(以防callobj
没有明确给出)。3.0 新版功能.
- classmethod
from_parent
(parent, **kw) [源代码] 公共构造函数。
function
底层 python function 对象。
repr_failure
(excinfo: _pytest._code.code.ExceptionInfo[ BaseException ]) → Union[ str , _pytest._code.code.TerminalRepr] [源代码]返回集合或测试失败的表示。
- 参数
excinfo -- 失败的异常信息。
FunctionDefinition
- class
FunctionDefinition
[源代码] 基类:
_pytest.python.Function
这个类是一个步骤差距解决方案,直到我们发展到拥有实际的函数定义节点并设法去掉
metafunc
.setup
() → None执行底层测试函数。
项目
- class
Item
[源代码] 一个基本的测试调用项。
请注意,对于单个函数,可能存在多个测试调用项。
MarkDecorator
MarkGenerator
作记号
元金属
模块
- class
Module
[源代码] 基类:
_pytest.nodes.File
,_pytest.python.PyCollector
用于测试类和函数的收集器。
collect
() → Iterable[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] [源代码]返回此集合节点的子级(项和收集器)列表。
结点
- class
Node
[源代码] 收集器和项的基类,测试集合树的组件。
收集器子类有子类;项是叶节点。
name
父节点范围内的唯一名称。
parent
父收集器节点。
fspath
从中收集此节点的文件系统路径(可以是 None)。
keywords
从所有范围收集的关键字/标记。
own_markers
: List[_pytest.mark.structures.Mark]属于此节点的标记对象。
extra_keyword_matches
: Set[ str ]允许添加用于匹配的额外关键字。
- classmethod
from_parent
(parent: _pytest.nodes.Node , **kw) [源代码] 节点的公共构造函数。
引入这种间接寻址是为了能够从节点构造函数中删除脆弱的逻辑。
子类可以使用
super().from_parent(...)
重写构造时。- 参数
parent -- 此节点的父节点。
ihook
用于调用 pytest 钩子的 fspath 敏感钩子代理。
warn
(warning: Warning ) → None [源代码]对此节点发出警告。
除非明确禁止,否则测试会话后将显示警告。
- 参数
warning ( Warning ) -- 要发出的警告实例。
- 引发
ValueError -- 如果
warning
实例不是警告的子类。
示例用法:
node.warn(PytestWarning("some message")) node.warn(UserWarning("some message"))
在 6.2 版更改: 的任何子类
Warning
现在已被接受,而不仅仅是PytestWarning
子类。
nodeid
一个::分隔的字符串,表示其集合树地址。
listchain
() → List[ _pytest.nodes.Node ] [源代码]从集合树的根开始,返回所有父收集器的列表,直至自身。
add_marker
(marker: Union[ str , _pytest.mark.structures.MarkDecorator], append: bool = True) → None [源代码]将标记对象动态添加到节点。
- 参数
append -- 是追加标记,还是预先添加标记。
iter_markers
(name: Optional[ str ] = None) → Iterator[_pytest.mark.structures.Mark] [源代码]迭代节点的所有标记。
- 参数
name -- 如果给定,则按 name 属性过滤结果。
- for ... in
iter_markers_with_node
(name: Optional[ str ] = None) → Iterator[Tuple[ _pytest.nodes.Node , _pytest.mark.structures.Mark]] [源代码] 迭代节点的所有标记。
- 参数
name -- 如果给定,则按 name 属性过滤结果。
- 返回
(节点,标记)元组的迭代器。
get_closest_marker
(name: str ) → Optional[_pytest.mark.structures.Mark] [源代码]get_closest_marker
(name: str , default: _pytest.mark.structures.Mark) → _pytest.mark.structures.Mark返回与名称匹配的第一个标记,从最近的(例如 function)到更远的级别(例如 module level)。
- 参数
default -- 如果找不到标记,则返回值。
name -- 筛选依据的名称。
addfinalizer
(fin: Callable[], object ]) → None [源代码]注册一个在完成此节点时要调用的函数。
仅当此节点在安装链中处于活动状态时,才能调用此方法,例如在 self.setup()期间。
getparent
(cls: Type[_NodeType]) → Optional[_NodeType] [源代码]获取下一个父节点(包括 self),它是给定类的实例。
repr_failure
(excinfo: _pytest._code.code.ExceptionInfo[ BaseException ], style: Optional[_TracebackStyle] = None) → Union[ str , _pytest._code.code.TerminalRepr] [源代码]返回集合或测试失败的表示。
- 参数
excinfo -- 失败的异常信息。
语法分析器
- final class
Parser
[源代码] 用于命令行参数和 ini 文件值的分析器。
- 变量
extra_info -- 在处理命令行参数时出错时要显示的 generic param->value 的 Dict。
getgroup
(name: str , description: str = '', after: Optional[ str ] = None) → _pytest.config.argparsing.OptionGroup [源代码]获取(或创建)命名选项组。
- 名称
选项组的名称。
- 描述
--help 输出的详细说明。
- 之后
另一组的名称,用于排序--帮助输出。
返回的组对象具有
addoption
与具有相同签名的方法parser.addoption
但将在相应的组中显示pytest. --help
.
addoption
(*opts: str , **attrs: Any) → None [源代码]注册命令行选项。
- 奥普茨
选项名称,可以是短选项或长选项。
- 阿特斯
相同的属性
add_argument()
功能 argparse library 接受。
在命令行解析之后,可以通过以下方式在 pytest config 对象上使用选项
config.option.NAME
在哪里?NAME
通常通过传递dest
例如,属性addoption("--long", dest="NAME", ...)
.
parse_known_args
(args: Sequence[Union[ str , py._path.local.LocalPath]], namespace: Optional[ argparse.Namespace ] = None) → argparse.Namespace [源代码]此时解析并返回一个带有已知参数的命名空间对象。
parse_known_and_unknown_args
(args: Sequence[Union[ str , py._path.local.LocalPath]], namespace: Optional[ argparse.Namespace ] = None) → Tuple[ argparse.Namespace , List[ str ]] [源代码]解析并返回一个命名空间对象,该对象具有已知参数,其余参数此时未知。
addini
(name: str , help: str , type: Optional[Literal['string', 'pathlist', 'args', 'linelist', 'bool']] = None, default=None) → None [源代码]注册 ini 文件选项。
- 名称
ini 变量的名称。
- 类型
变量的类型,可以是
string
,pathlist
,args
,linelist
或bool
. 默认为string
如果None
或者不通过。- 违约
如果不存在 ini 文件选项但被查询,则为默认值。
可以通过调用
config.getini(name)
.
PytestPluginManager
- final class
PytestPluginManager
[源代码] 基类:
pluggy.manager.PluginManager
A
pluggy.PluginManager
使用附加的 pytest 特定功能:从命令行加载插件,
PYTEST_PLUGINS
env 变量和pytest_plugins
在加载的插件中找到全局变量。conftest.py
启动时加载。
register
(plugin: object , name: Optional[ str ] = None) → Optional[ str ] [源代码]注册插件并返回其规范名称或
None
如果名字被阻止注册。提高ValueError
如果插件已经注册。
import_plugin
(modname: str , consider_entry_points: bool = False) → None [源代码]使用导入插件
modname
.如果
consider_entry_points
为真,入口点名称也被视为查找插件。
add_hookcall_monitoring
(before, after)为所有钩子添加 before/after 跟踪函数,并返回一个撤消函数,调用该函数时,将删除添加的跟踪程序。
before(hook_name, hook_impls, kwargs)
将在所有钩子调用之前调用并接收钩子调用方实例、钩子调用的钩子 impl 实例列表和关键字参数。after(outcome, hook_name, hook_impls, kwargs)
接收的参数与before
而且也是pluggy.callers._Result
对象,它表示整个钩子调用的结果。
add_hookspecs
(module_or_class)添加在给定的
module_or_class
. 如果对函数进行了相应的修饰,则可以识别这些函数。
check_pending
()确认所有未按照吊钩规格进行验证的吊钩都是可选的,否则升起
PluginValidationError
.
enable_tracing
()启用钩子调用跟踪并返回一个撤消函数。
get_canonical_name
(plugin)返回插件对象的规范名称。请注意,插件可能注册在不同的名称下,该名称由的调用方指定
register(plugin, name)
. 要获取已注册插件的名称,请使用get_name(plugin)
相反。
get_hookcallers
(plugin)获取指定插件的所有挂钩调用程序。
get_name
(plugin)返回已注册插件的名称或
None
如果没有注册。
get_plugin
(name)返回插件或
None
为了这个名字。
get_plugins
()返回一组已注册的插件。
has_plugin
(name)返回
True
如果注册了具有给定名称的插件。
is_blocked
(name)返回
True
如果给定的插件名称被阻止。
is_registered
(plugin)返回
True
如果插件已经注册。
list_name_plugin
()返回名称/插件对列表。
list_plugin_distinfo
()返回所有安装工具注册插件的 distinfo/plugin 元组列表。
load_setuptools_entrypoints
(group, name=None)从查询指定的设置工具加载模块
group
.
set_blocked
(name)阻止给定名称的注册,如果已注册,则取消注册。
subset_hook_caller
(name, remove_plugins)返回一个新的
hooks._HookCaller
指定方法的实例,该方法管理对所有已注册插件的调用(removeu plugins 中的插件除外)。
unregister
(plugin=None, name=None)从内部数据结构中注销插件对象及其包含的所有 hook 实现。
会话
- final class
Session
[源代码] - exception
Interrupted
发出测试运行中断的信号。
- exception
Failed
基类:
Exception
测试运行失败时发出停止信号。
perform_collect
(args: Optional[Sequence[ str ]] = '...', genitems: Literal[True] = '...') → Sequence[_pytest.nodes.Item] [源代码]perform_collect
(args: Optional[Sequence[ str ]] = '...', genitems: bool = '...') → Sequence[Union[_pytest.nodes.Item, _pytest.nodes.Collector]]执行此会话的收集阶段。
默认情况下会调用此函数
pytest_collection
钩子实现;有关详细信息,请参阅该钩子的文档。出于测试目的,也可以直接调用Session
.此函数通常递归地将从会话收集的所有收集器扩展到它们的项,并且只返回项。出于测试目的,可以通过
genitems=False
,在这种情况下,返回值包含这些未展开的收集器,以及session.items
是空的。
- for ... in
collect
() → Iterator[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] [源代码] 返回此集合节点的子级(项和收集器)列表。
- exception
TestReport
- final class
TestReport
[源代码] 基类:
_pytest.reports.BaseReport
基本测试报告对象(如果失败,也用于安装和拆卸调用)。
nodeid
: str规范化集合节点 ID。
keywords
包含与测试调用相关联的所有关键字和标记的名称->值字典。
outcome
测试结果,总是 通过 、 失败 、 跳过 之一。
longrepr
: Union[ None , _pytest._code.code.ExceptionInfo[ BaseException ], Tuple[ str , int , str ], str , _pytest._code.code.TerminalRepr]无或故障表示。
when
: Optional[ str ]setup 、 call 、 teardown 之一指示 runtest 阶段。
user_properties
User properties 是保存测试的用户定义属性的元组(名称、值)列表。
sections
: List[Tuple[ str , str ]]对列表
(str, str)
需要整理的额外信息。由 pytest 用于添加捕获的文本stdout
和stderr
,但也可以被其他插件用于向报表添加任意信息。
duration
运行测试所花的时间。
- classmethod
from_item_and_call
(item: _pytest.nodes.Item, call: CallInfo[ None ]) → TestReport [源代码] 创建并用标准项和调用信息填充测试报告。
caplog
如果启用了日志捕获,则返回捕获的日志行。
3.5 新版功能.
capstderr
如果启用了捕获,则从 stderr 返回捕获的文本。
3.0 新版功能.
capstdout
如果启用了捕获,则从 stdout 返回捕获的文本。
3.0 新版功能.
count_towards_summary
实验 该报告是否应计入测试结束时显示的总数: 1 个通过,1 个失败,等等 。
注解
考虑到该功能 实验的 ,因此请注意,即使在补丁发布中,它也会发生变化。
head_line
实验 此报告的 longrepr 输出中显示的标题行,通常在失败期间的回溯表示期间:
________ Test.foo ________
在上面的例子中,head_行是 test.foo 。
注解
考虑到该功能 实验的 ,因此请注意,即使在补丁发布中,它也会发生变化。
longreprtext
只读属性,返回
longrepr
.3.0 新版功能.
_Result
结果使用范围 hook wrappers .
- class
_Result
(result, excinfo) [源代码]
_Result.
get_result
() [源代码]获取此挂钩调用的结果。
如果钩子被标记为
firstresult
只返回一个值,否则返回结果列表。
_Result.
force_result
(result) [源代码]强制结果为
result
.如果钩子被标记为
firstresult
应设置单个值,否则应设置(修改)结果列表。调用期间发现的任何异常都将被删除。
全局变量
当在测试模块或 conftest.py
文件夹。
collect_ignore
教程 : 自定义测试集合
可以在中声明 conftest.py 文件 排除测试目录或模块。需要 list[str]
.
collect_ignore = ["setup.py"]
collect_ignore_glob
教程 : 自定义测试集合
可以在中声明 conftest.py 文件 用 unix shell 风格的通配符排除测试目录或模块。需要 list[str]
在哪里? str
可以包含全局模式。
collect_ignore_glob = ["*_ignore.py"]
pytest_plugins
教程 : 在测试模块或 conftest 文件中要求/加载插件
可以在 全球的 在水平 测试模块 和 conftest.py 文件 注册其他插件。可以是一个 str
或 Sequence[str]
.
pytest_plugins = "myapp.testsupport.myplugin"
pytest_plugins = ("myapp.testsupport.tools", "myapp.testsupport.regression")
pytestmark
教程 : 标记整个类或模块
可以在 全球的 在水平 测试模块 应用一个或多个 marks 所有测试功能和方法。可以是单个标记,也可以是标记列表(按从左到右的顺序应用)。
import pytest pytestmark = pytest.mark.webtest
import pytest pytestmark = [pytest.mark.integration, pytest.mark.slow]
环境变量
可用于更改 Pytest 行为的环境变量。
PYTEST_ADDOPTS
这包含一个命令行(由 py:mod: shlex`模块解析),将 **预先准备的** 到用户提供的命令行,请参见 :ref:`adding default options
更多信息。
PYTEST_CURRENT_TEST
这并不意味着由用户设置,而是由 pytest 在内部使用当前测试的名称进行设置,以便其他进程可以检查它,请参见 PYTEST_CURRENT_TEST 环境变量 更多信息。
PYTEST_DEBUG
设置后,pytest 将打印跟踪和调试信息。
PYTEST_DISABLE_PLUGIN_AUTOLOAD
设置后,禁用通过设置工具入口点自动加载插件。只加载显式指定的插件。
PYTEST_PLUGINS
包含应作为插件加载的模块的逗号分隔列表:
export PYTEST_PLUGINS=mymodule.plugin,xdist
PY_COLORS
当设置为 1
,pytest 将在终端输出中使用颜色。设置为时 0
,pytest 将不使用颜色。 PY_COLORS
优先于 NO_COLOR
和 FORCE_COLOR
.
NO_COLOR
设置后(不管值如何),pytest 将不在终端输出中使用颜色。 PY_COLORS
takes precedence over NO_COLOR
, which takes precedence over FORCE_COLOR
. See no-color.org 支持此社区标准的其他库。
FORCE_COLOR
设置后(不管值如何),pytest 将在终端输出中使用颜色。 PY_COLORS
和 NO_COLOR
优先于 FORCE_COLOR
.
例外情况
警告
在某些情况下生成的自定义警告,例如使用不当或不推荐使用的功能。
- class
PytestWarning
基类:
UserWarning
pytest 发出的所有警告的基类。
- class
PytestAssertRewriteWarning
pytest assert 重写模块发出的警告。
- class
PytestCacheWarning
缓存插件在各种情况下发出的警告。
- class
PytestCollectionWarning
当 py 无法收集文件中的警告时,会发出警告。
- class
PytestConfigWarning
针对配置问题发出警告。
- class
PytestDeprecationWarning
基类:
pytest.PytestWarning
,DeprecationWarning
将在未来版本中删除的功能的警告类。
- class
PytestExperimentalApiWarning
基类:
pytest.PytestWarning
,FutureWarning
在 pytest 中用来表示实验的警告类别。
谨慎使用,因为 API 可能会在将来的版本中更改甚至完全删除。
- class
PytestUnhandledCoroutineWarning
为未处理的协同进程发出警告。
收集测试函数时遇到协同程序,但没有被任何异步感知插件处理。协同程序测试函数本机不受支持。
- class
PytestUnknownMarkWarning
使用未知标记时发出警告。
见 用属性标记测试函数 有关详细信息。
- class
PytestUnraisableExceptionWarning
报告了一个无可辩驳的例外情况。
不可撤销的异常是在
__del__
实现以及无法正常引发异常的类似情况。
- class
PytestUnhandledThreadExceptionWarning
中发生未经处理的异常。
Thread
.此类异常不会正常传播。
咨询 内部 Pytest 警告 有关详细信息,请参阅文档中的。
配置选项
下面是一个内置配置选项列表,可以在 pytest.ini
, pyproject.toml
, tox.ini
或 setup.cfg
文件,通常位于存储库的根目录。要查看每个文件格式的详细信息,请参阅 配置文件格式 .
警告
用法 setup.cfg
除了非常简单的用例外,不建议使用。 .cfg
文件使用不同于 pytest.ini
和 tox.ini
这可能会导致难以追踪的问题。如果可能,建议使用后一个文件,或者 pyproject.toml
,以保存 pytest 配置。
可以使用命令行中的 -o/--override-ini
,也可以多次传递。预期格式为 name=value
. 例如::
pytest -o console_output_style=classic -o cache_dir=/tmp/mycache
addopts
添加指定的
OPTS
命令行参数集,就好像它们是由用户指定的一样。示例:如果您有这个 ini 文件内容:# content of pytest.ini [pytest] addopts = --maxfail=2 -rf # exit after 2 failures, report fail info
发行
pytest test_hello.py
实际上是指:pytest --maxfail=2 -rf test_hello.py
默认为不添加选项。
cache_dir
设置存储缓存插件内容的目录。默认目录为
.pytest_cache
创建于 rootdir . 目录可以是相对路径或绝对路径。如果设置相对路径,则创建目录相对于 rootdir . 另外,路径可能包含将要展开的环境变量。有关缓存插件的详细信息,请参阅 缓存:使用交叉测试运行状态 .
confcutdir
设置向上搜索的目录
conftest.py
files stops. By default, pytest will stop searching forconftest.py
files upwards frompytest.ini
/tox.ini
/ `` 如果有的话,可以设置项目的.cfg``或文件系统根目录。
console_output_style
在运行测试时设置控制台输出样式:
classic
:经典 Pytest 输出。progress
:类似于经典的 pytest 输出,但带有进度指示器。count
:与进度类似,但进度显示为已完成的测试数而不是百分比。
默认值为
progress
,但你可以退回到classic
如果您喜欢或新模式导致意外问题:# content of pytest.ini [pytest] console_output_style = classic
doctest_encoding
用于用 docstring 解码文本文件的默认编码。 See how pytest handles doctests .
doctest_optionflags
标准中的一个或多个 doctest 标志名
doctest
模块。 See how pytest handles doctests .
empty_parameter_set_mark
允许在参数化中选择空参数集的操作
skip
跳过参数集为空的测试(默认)xfail
使用空参数集将测试标记为 xfail(run=false)fail_at_collect
如果参数化收集空参数集,则引发异常
# content of pytest.ini [pytest] empty_parameter_set_mark = xfail
注解
此选项的默认值计划更改为
xfail
在未来的版本中,由于这被认为不易出错,请参阅 #3155 了解更多详细信息。
faulthandler_timeout
如果测试时间超过
X
运行秒数(包括夹具设置和拆卸)。使用 faulthandler.dump_traceback_later 函数,所以这里的所有警告都适用。# content of pytest.ini [pytest] faulthandler_timeout=5
有关更多信息,请参阅 故障处理程序 .
filterwarnings
设置应对匹配警告采取的筛选器和操作的列表。默认情况下,测试会话期间发出的所有警告都将显示在测试会话结束时的摘要中。
# content of pytest.ini [pytest] filterwarnings = error ignore::DeprecationWarning
这会告诉 pytest 忽略拒绝警告并将所有其他警告变为错误。有关更多信息,请参阅 捕获警告 .
junit_duration_report
4.1 新版功能.
配置如何将持续时间记录到 JUnit XML 报告中:
total
(默认):报告的持续时间包括设置、调用和拆卸时间。call
:报告的持续时间仅包括呼叫时间,不包括安装和拆卸时间。
[pytest] junit_duration_report = call
junit_family
4.2 新版功能.
在 6.1 版更改: 默认更改为
xunit2
.配置生成的 JUnit XML 文件的格式。可能的选择是:
xunit1
(或)legacy
):生成与 XUnit 1.0 格式兼容的旧样式输出。xunit2
: produces xunit 2.0 style output ,它应该与最新的 Jenkins 版本更兼容。 这是默认值 .
[pytest] junit_family = xunit2
junit_logging
3.5 新版功能.
在 5.4 版更改:
log
,all
,out-err
添加了选项。配置捕获的输出是否应写入 JUnit XML 文件。有效值为:
log
:只写logging
捕获的输出。system-out
:写入捕获stdout
内容。system-err
:写入捕获stderr
内容。out-err
:写入捕获的两个stdout
和stderr
内容。all
:写入捕获logging
,stdout
和stderr
内容。no
(默认):不写入捕获的输出。
[pytest] junit_logging = system-out
junit_log_passing_tests
4.6 新版功能.
如果
junit_logging != "no"
,配置是否应将捕获的输出写入 JUnit XML 文件 经过 测验。默认为True
.[pytest] junit_log_passing_tests = False
junit_suite_name
要设置根测试套件 XML 项的名称,可以配置
junit_suite_name
配置文件中的选项:[pytest] junit_suite_name = my_suite
log_auto_indent
允许多行日志消息的选择性自动缩进。
支持命令行选项
--log-auto-indent [value]
和配置选项log_auto_indent = [value]
为所有日志记录设置自动缩进行为。[value]
可以是:True 或 On -动态自动缩进多行日志消息
False 或 Off 或 0-不自动缩进多行日志消息(默认行为)
[正整数] -多行日志消息的自动缩进方式 [价值] 空间
[pytest] log_auto_indent = False
支持通过 kwarg
extra={{"auto_indent": [value]}}
打电话给logging.log()
为日志中的特定项指定自动缩进行为。extra
kwarg 重写命令行或配置中指定的值。
log_cli
在测试期间启用显示(也称为运行日志 "live logging" )默认值为
False
.[pytest] log_cli = True
log_cli_date_format
设置一个
time.strftime()
-用于设置实时日志记录日期格式的兼容字符串。[pytest] log_cli_date_format = %Y-%m-%d %H:%M:%S
有关详细信息,请参阅 活原木 .
log_cli_format
设置一个
logging
-用于格式化实时日志消息的兼容字符串。[pytest] log_cli_format = %(asctime)s %(levelname)s %(message)s
有关详细信息,请参阅 活原木 .
log_cli_level
设置应为实时日志记录捕获的最小日志消息级别。可以使用整数值或级别名称。
[pytest] log_cli_level = INFO
有关详细信息,请参阅 活原木 .
log_date_format
设置一个
time.strftime()
-设置日志记录捕获日期格式时将使用的兼容字符串。[pytest] log_date_format = %Y-%m-%d %H:%M:%S
有关详细信息,请参阅 登录 .
log_file
设置相对于
pytest.ini
除了其他活动的日志记录工具之外,还应写入日志消息的文件。[pytest] log_file = logs/pytest-logs.txt
有关详细信息,请参阅 登录 .
log_file_date_format
设置一个
time.strftime()
-用于格式化日志文件日期的兼容字符串。[pytest] log_file_date_format = %Y-%m-%d %H:%M:%S
有关详细信息,请参阅 登录 .
log_file_format
设置一个
logging
-用于格式化重定向到日志文件的日志消息的兼容字符串。[pytest] log_file_format = %(asctime)s %(levelname)s %(message)s
有关详细信息,请参阅 登录 .
log_file_level
设置应为日志文件捕获的最小日志消息级别。可以使用整数值或级别名称。
[pytest] log_file_level = INFO
有关详细信息,请参阅 登录 .
log_format
设置一个
logging
-用于格式化捕获的日志消息的兼容字符串。[pytest] log_format = %(asctime)s %(levelname)s %(message)s
有关详细信息,请参阅 登录 .
log_level
设置日志捕获应捕获的最小日志消息级别。可以使用整数值或级别名称。
[pytest] log_level = INFO
有关详细信息,请参阅 登录 .
markers
当
--strict-markers
或--strict
使用命令行参数时,只允许使用已知标记(由 core pytest 或某些插件在代码中定义)。您可以在此设置中列出其他标记以将它们添加到白名单,在这种情况下,您可能希望添加
--strict-markers
到addopts
为了避免将来的倒退:[pytest] addopts = --strict-markers markers = slow serial
注解
The use of
--strict-markers
is highly preferred.--strict
was kept for backward compatibility only and may be confusing for others as it only applies to markers and not to other options.
minversion
指定运行测试所需的最小 pytest 版本。
# content of pytest.ini [pytest] minversion = 3.0 # will fail if we run with pytest-2.8
norecursedirs
设置在递归测试发现时避免使用的目录 basename 模式。单独的(fnmatch 样式)模式将应用于目录的基名称,以决定是否递归到该目录中。模式匹配字符:
* matches everything ? matches any single character [seq] matches any character in seq [!seq] matches any char not in seq
默认模式为
'*.egg'
,'.*'
,'_darcs'
,'build'
,'CVS'
,'dist'
,'node_modules'
,'venv'
,'{{arch}}'
. 设置一个norecursedirs
替换默认值。以下是如何避免某些目录的示例:[pytest] norecursedirs = .svn _build tmp*
这会告诉
pytest
不查看典型的 Subversion 或 Sphinx 构建目录或tmp
前缀目录。此外,
pytest
将尝试通过激活脚本智能地识别和忽略 virtualenv。任何被视为虚拟环境根目录的目录在测试收集期间都不会被考虑,除非‑‑collect‑in‑virtualenv
给出。还要注意norecursedirs
优先于‑‑collect‑in‑virtualenv
;例如,如果要在具有匹配的基目录的 virtualenv 中运行测试'.*'
你 must 覆盖norecursedirs
除了使用‑‑collect‑in‑virtualenv
旗帜。
python_classes
一个或多个名称前缀或全局样式模式,用于确定要为测试集合考虑哪些类。通过在模式之间添加空格来搜索多个全局模式。默认情况下,pytest 将考虑以
Test
作为测试集合。下面是一个如何从以Suite
:[pytest] python_classes = *Suite
注意
unittest.TestCase
无论此选项如何,派生类总是被收集,因为unittest
使用自己的收集框架来收集这些测试。
python_files
一个或多个全局样式的文件模式,用于确定哪些 python 文件被视为测试模块。通过在模式之间添加空格来搜索多个全局模式:
[pytest] python_files = test_*.py check_*.py example_*.py
或每行一个:
[pytest] python_files = test_*.py check_*.py example_*.py
默认情况下,文件匹配
test_*.py
和*_test.py
将被视为测试模块。
python_functions
一个或多个名称前缀或全局模式决定哪些测试函数和方法被视为测试。通过在模式之间添加空格来搜索多个全局模式。默认情况下,pytest 将考虑前缀为
test
作为一个测试。下面是一个如何收集以_test
:[pytest] python_functions = *_test
请注意,这对使用
unittest .TestCase
派生类,asunittest
使用自己的收集框架来收集这些测试。见 更改命名约定 更详细的例子。
required_plugins
必须存在才能运行 pytest 的插件的空格分隔列表。插件可以直接在其名称后面列出,也可以不带版本说明符。不同版本说明符之间不允许有空格。如果没有找到任何一个插件,发出一个错误。
[pytest] required_plugins = pytest-django>=3.0.0,<4.0.0 pytest-html pytest-xdist>=1.0.0
testpaths
当命令行中没有指定特定目录、文件或测试 ID 时,从中执行 pytest 时,应搜索的目录列表。 rootdir 目录。当所有项目测试都在一个已知的位置时很有用,以加速测试收集并避免意外地获取不需要的测试。
[pytest] testpaths = testing doc
这会告诉 pytest 只在
testing
和doc
从根目录执行时的目录。
usefixtures
将应用于所有测试函数的设备列表;这在语义上与应用
@pytest.mark.usefixtures
标记所有测试功能。[pytest] usefixtures = clean_db
xfail_strict
如果设置为
True
,测试标记为@pytest.mark.xfail
默认情况下,实际成功的测试将使测试套件失败。有关详细信息,请参阅 strict 参数 .[pytest] xfail_strict = True
命令行标志
所有命令行标志都可以通过运行 pytest --help
::
$ pytest --help usage: pytest [options] [file_or_dir] [file_or_dir] [...] positional arguments: file_or_dir general: -k EXPRESSION only run tests which match the given substring expression. An expression is a python evaluatable expression where all names are substring-matched against test names and their parent classes. Example: -k 'test_method or test_other' matches all test functions and classes whose name contains 'test_method' or 'test_other', while -k 'not test_method' matches those that don't contain 'test_method' in their names. -k 'not test_method and not test_other' will eliminate the matches. Additionally keywords are matched to classes and functions containing extra names in their 'extra_keyword_matches' set, as well as functions which have names assigned directly to them. The matching is case-insensitive. -m MARKEXPR only run tests matching given mark expression. For example: -m 'mark1 and not mark2'. --markers show markers (builtin, plugin and per-project ones). -x, --exitfirst exit instantly on first error or failed test. --fixtures, --funcargs show available fixtures, sorted by plugin appearance (fixtures with leading '_' are only shown with '-v') --fixtures-per-test show fixtures per test --pdb start the interactive Python debugger on errors or KeyboardInterrupt. --pdbcls=modulename:classname start a custom interactive Python debugger on errors. For example: --pdbcls=IPython.terminal.debugger:TerminalPdb --trace Immediately break when running each test. --capture=method per-test capturing method: one of fd|sys|no|tee-sys. -s shortcut for --capture=no. --runxfail report the results of xfail tests as if they were not marked --lf, --last-failed rerun only the tests that failed at the last run (or all if none failed) --ff, --failed-first run all tests, but run the last failures first. This may re-order tests and thus lead to repeated fixture setup/teardown. --nf, --new-first run tests from new files first, then the rest of the tests sorted by file mtime --cache-show=[CACHESHOW] show cache contents, don't perform collection or tests. Optional argument: glob (default: '*'). --cache-clear remove all cache contents at start of test run. --lfnf={all,none}, --last-failed-no-failures={all,none} which tests to run with no previously (known) failures. --sw, --stepwise exit on test failure and continue from last failing test next time --sw-skip, --stepwise-skip ignore the first failing test but stop on the next failing test reporting: --durations=N show N slowest setup/test durations (N=0 for all). --durations-min=N Minimal duration in seconds for inclusion in slowest list. Default 0.005 -v, --verbose increase verbosity. --no-header disable header --no-summary disable summary -q, --quiet decrease verbosity. --verbosity=VERBOSE set verbosity. Default is 0. -r chars show extra test summary info as specified by chars: (f)ailed, (E)rror, (s)kipped, (x)failed, (X)passed, (p)assed, (P)assed with output, (a)ll except passed (p/P), or (A)ll. (w)arnings are enabled by default (see --disable-warnings), 'N' can be used to reset the list. (default: 'fE'). --disable-warnings, --disable-pytest-warnings disable warnings summary -l, --showlocals show locals in tracebacks (disabled by default). --tb=style traceback print mode (auto/long/short/line/native/no). --show-capture={no,stdout,stderr,log,all} Controls how captured stdout/stderr/log is shown on failed tests. Default is 'all'. --full-trace don't cut any tracebacks (default is to cut). --color=color color terminal output (yes/no/auto). --code-highlight={yes,no} Whether code should be highlighted (only if --color is also enabled) --pastebin=mode send failed|all info to bpaste.net pastebin service. --junit-xml=path create junit-xml style report file at given path. --junit-prefix=str prepend prefix to classnames in junit-xml output pytest-warnings: -W PYTHONWARNINGS, --pythonwarnings=PYTHONWARNINGS set which warnings to report, see -W option of python itself. --maxfail=num exit after first num failures or errors. --strict-config any warnings encountered while parsing the `pytest` section of the configuration file raise errors. --strict-markers markers not registered in the `markers` section of the configuration file raise errors. --strict (deprecated) alias to --strict-markers. -c file load configuration from `file` instead of trying to locate one of the implicit configuration files. --continue-on-collection-errors Force test execution even if collection errors occur. --rootdir=ROOTDIR Define root directory for tests. Can be relative path: 'root_dir', './root_dir', 'root_dir/another_dir/'; absolute path: '/home/user/root_dir'; path with variables: '$HOME/root_dir'. collection: --collect-only, --co only collect tests, don't execute them. --pyargs try to interpret all arguments as python packages. --ignore=path ignore path during collection (multi-allowed). --ignore-glob=path ignore path pattern during collection (multi- allowed). --deselect=nodeid_prefix deselect item (via node id prefix) during collection (multi-allowed). --confcutdir=dir only load conftest.py's relative to specified dir. --noconftest Don't load any conftest.py files. --keep-duplicates Keep duplicate tests. --collect-in-virtualenv Don't ignore tests in a local virtualenv directory --import-mode={prepend,append,importlib} prepend/append to sys.path when importing test modules and conftest files, default is to prepend. --doctest-modules run doctests in all .py modules --doctest-report={none,cdiff,ndiff,udiff,only_first_failure} choose another output format for diffs on doctest failure --doctest-glob=pat doctests file matching pattern, default: test*.txt --doctest-ignore-import-errors ignore doctest ImportErrors --doctest-continue-on-failure for a given doctest, continue to run after the first failure test session debugging and configuration: --basetemp=dir base temporary directory for this test run.(warning: this directory is removed if it exists) -V, --version display pytest version and information about plugins.When given twice, also display information about plugins. -h, --help show help message and configuration info -p name early-load given plugin module name or entry point (multi-allowed). To avoid loading of plugins, use the `no:` prefix, e.g. `no:doctest`. --trace-config trace considerations of conftest.py files. --debug store internal tracing debug information in 'pytestdebug.log'. -o OVERRIDE_INI, --override-ini=OVERRIDE_INI override ini option with "option=value" style, e.g. `-o xfail_strict=True -o cache_dir=cache`. --assert=MODE Control assertion debugging tools. 'plain' performs no assertion debugging. 'rewrite' (the default) rewrites assert statements in test modules on import to provide assert expression information. --setup-only only setup fixtures, do not execute tests. --setup-show show setup of fixtures while executing tests. --setup-plan show what fixtures and tests would be executed but don't execute anything. logging: --log-level=LEVEL level of messages to catch/display. Not set by default, so it depends on the root/parent log handler's effective level, where it is "WARNING" by default. --log-format=LOG_FORMAT log format as used by the logging module. --log-date-format=LOG_DATE_FORMAT log date format as used by the logging module. --log-cli-level=LOG_CLI_LEVEL cli logging level. --log-cli-format=LOG_CLI_FORMAT log format as used by the logging module. --log-cli-date-format=LOG_CLI_DATE_FORMAT log date format as used by the logging module. --log-file=LOG_FILE path to a file when logging will be written to. --log-file-level=LOG_FILE_LEVEL log file logging level. --log-file-format=LOG_FILE_FORMAT log format as used by the logging module. --log-file-date-format=LOG_FILE_DATE_FORMAT log date format as used by the logging module. --log-auto-indent=LOG_AUTO_INDENT Auto-indent multiline messages passed to the logging module. Accepts true|on, false|off or an integer. [pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg file found: markers (linelist): markers for test functions empty_parameter_set_mark (string): default marker for empty parametersets norecursedirs (args): directory patterns to avoid for recursion testpaths (args): directories to search for tests when no files or directories are given in the command line. filterwarnings (linelist): Each line specifies a pattern for warnings.filterwarnings. Processed after -W/--pythonwarnings. usefixtures (args): list of default fixtures to be used with this project python_files (args): glob-style file patterns for Python test module discovery python_classes (args): prefixes or glob names for Python test class discovery python_functions (args): prefixes or glob names for Python test function and method discovery disable_test_id_escaping_and_forfeit_all_rights_to_community_support (bool): disable string escape non-ascii characters, might cause unwanted side effects(use at your own risk) console_output_style (string): console output: "classic", or with additional progress information ("progress" (percentage) | "count"). xfail_strict (bool): default for the strict parameter of xfail markers when not given explicitly (default: False) enable_assertion_pass_hook (bool): Enables the pytest_assertion_pass hook.Make sure to delete any previously generated pyc cache files. junit_suite_name (string): Test suite name for JUnit report junit_logging (string): Write captured log messages to JUnit report: one of no|log|system-out|system-err|out-err|all junit_log_passing_tests (bool): Capture log information for passing tests to JUnit report: junit_duration_report (string): Duration time to report: one of total|call junit_family (string): Emit XML for schema: one of legacy|xunit1|xunit2 doctest_optionflags (args): option flags for doctests doctest_encoding (string): encoding used for doctest files cache_dir (string): cache directory path. log_level (string): default value for --log-level log_format (string): default value for --log-format log_date_format (string): default value for --log-date-format log_cli (bool): enable log display during test run (also known as "live logging"). log_cli_level (string): default value for --log-cli-level log_cli_format (string): default value for --log-cli-format log_cli_date_format (string): default value for --log-cli-date-format log_file (string): default value for --log-file log_file_level (string): default value for --log-file-level log_file_format (string): default value for --log-file-format log_file_date_format (string): default value for --log-file-date-format log_auto_indent (string): default value for --log-auto-indent faulthandler_timeout (string): Dump the traceback of all threads if a test takes more than TIMEOUT seconds to finish. addopts (args): extra command line options minversion (string): minimally required pytest version required_plugins (args): plugins that must be present for pytest to run environment variables: PYTEST_ADDOPTS extra command line options PYTEST_PLUGINS comma-separated plugins to load during startup PYTEST_DISABLE_PLUGIN_AUTOLOAD set to disable plugin auto-loading PYTEST_DEBUG set to enable debug tracing of pytest's internals to see available markers type: pytest --markers to see available fixtures type: pytest --fixtures (shown according to specified file_or_dir or current dir if not specified; fixtures with leading '_' are only shown with the '-v' option
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论