Merge branch 'main' into bschubert/more-dict-highlights
This commit is contained in:
commit
5574e8486b
|
@ -73,7 +73,7 @@ jobs:
|
|||
persist-credentials: false
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ jobs:
|
|||
fetch-depth: 0
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.8"
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ jobs:
|
|||
permissions:
|
||||
issues: write
|
||||
steps:
|
||||
- uses: actions/stale@v8
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
debug-only: false
|
||||
days-before-issue-stale: 14
|
||||
|
|
|
@ -156,7 +156,7 @@ jobs:
|
|||
tox_env: "py312-xdist"
|
||||
|
||||
- name: "plugins"
|
||||
python: "3.9"
|
||||
python: "3.12"
|
||||
os: ubuntu-latest
|
||||
tox_env: "plugins"
|
||||
|
||||
|
@ -179,7 +179,7 @@ jobs:
|
|||
path: dist
|
||||
|
||||
- name: Set up Python ${{ matrix.python }}
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ matrix.python }}
|
||||
check-latest: ${{ endsWith(matrix.python, '-dev') }}
|
||||
|
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
fetch-depth: 0
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
cache: pip
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
repos:
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 23.11.0
|
||||
rev: 23.12.0
|
||||
hooks:
|
||||
- id: black
|
||||
args: [--safe, --quiet]
|
||||
|
|
1
AUTHORS
1
AUTHORS
|
@ -48,6 +48,7 @@ Ariel Pillemer
|
|||
Armin Rigo
|
||||
Aron Coyle
|
||||
Aron Curzon
|
||||
Arthur Richard
|
||||
Ashish Kurmi
|
||||
Aviral Verma
|
||||
Aviv Palivoda
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
The classes :class:`~_pytest.nodes.Node`, :class:`~pytest.Collector`, :class:`~pytest.Item`, :class:`~pytest.File`, :class:`~_pytest.nodes.FSCollector` are now marked abstract (see :mod:`abc`).
|
||||
|
||||
We do not expect this change to affect users and plugin authors, it will only cause errors when the code is already wrong or problematic.
|
|
@ -1,4 +1,4 @@
|
|||
:func:`pytest.warns <warns>` now re-emits unmatched warnings when the context
|
||||
:func:`~pytest.warns` now re-emits unmatched warnings when the context
|
||||
closes -- previously it would consume all warnings, hiding those that were not
|
||||
matched by the function.
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ b) transitional: the old and new API don't conflict
|
|||
|
||||
We will only start the removal of deprecated functionality in major releases (e.g. if we deprecate something in 3.0 we will start to remove it in 4.0), and keep it around for at least two minor releases (e.g. if we deprecate something in 3.9 and 4.0 is the next release, we start to remove it in 5.0, not in 4.0).
|
||||
|
||||
A deprecated feature scheduled to be removed in major version X will use the warning class `PytestRemovedInXWarning` (a subclass of :class:`~pytest.PytestDeprecationwarning`).
|
||||
A deprecated feature scheduled to be removed in major version X will use the warning class `PytestRemovedInXWarning` (a subclass of :class:`~pytest.PytestDeprecationWarning`).
|
||||
|
||||
When the deprecation expires (e.g. 4.0 is released), we won't remove the deprecated functionality immediately, but will use the standard warning filters to turn `PytestRemovedInXWarning` (e.g. `PytestRemovedIn4Warning`) into **errors** by default. This approach makes it explicit that removal is imminent, and still gives you time to turn the deprecated feature into a warning instead of an error so it can be dealt with in your own time. In the next minor release (e.g. 4.1), the feature will be effectively removed.
|
||||
|
||||
|
|
|
@ -413,7 +413,7 @@ Improvements
|
|||
|
||||
|
||||
- `#8508 <https://github.com/pytest-dev/pytest/issues/8508>`_: Introduce multiline display for warning matching via :py:func:`pytest.warns` and
|
||||
enhance match comparison for :py:func:`_pytest._code.ExceptionInfo.match` as returned by :py:func:`pytest.raises`.
|
||||
enhance match comparison for :py:func:`pytest.ExceptionInfo.match` as returned by :py:func:`pytest.raises`.
|
||||
|
||||
|
||||
- `#8646 <https://github.com/pytest-dev/pytest/issues/8646>`_: Improve :py:func:`pytest.raises`. Previously passing an empty tuple would give a confusing
|
||||
|
@ -422,7 +422,7 @@ Improvements
|
|||
|
||||
- `#9741 <https://github.com/pytest-dev/pytest/issues/9741>`_: On Python 3.11, use the standard library's :mod:`tomllib` to parse TOML.
|
||||
|
||||
:mod:`tomli` is no longer a dependency on Python 3.11.
|
||||
`tomli` is no longer a dependency on Python 3.11.
|
||||
|
||||
|
||||
- `#9742 <https://github.com/pytest-dev/pytest/issues/9742>`_: Display assertion message without escaped newline characters with ``-vv``.
|
||||
|
@ -457,7 +457,7 @@ Bug Fixes
|
|||
|
||||
When inheriting marks from super-classes, marks from the sub-classes are now ordered before marks from the super-classes, in MRO order. Previously it was the reverse.
|
||||
|
||||
When inheriting marks from super-classes, the `pytestmark` attribute of the sub-class now only contains the marks directly applied to it. Previously, it also contained marks from its super-classes. Please note that this attribute should not normally be accessed directly; use :func:`pytest.Node.iter_markers` instead.
|
||||
When inheriting marks from super-classes, the `pytestmark` attribute of the sub-class now only contains the marks directly applied to it. Previously, it also contained marks from its super-classes. Please note that this attribute should not normally be accessed directly; use :func:`Node.iter_markers <_pytest.nodes.Node.iter_markers>` instead.
|
||||
|
||||
|
||||
- `#9159 <https://github.com/pytest-dev/pytest/issues/9159>`_: Showing inner exceptions by forcing native display in ``ExceptionGroups`` even when using display options other than ``--tb=native``. A temporary step before full implementation of pytest-native display for inner exceptions in ``ExceptionGroups``.
|
||||
|
@ -710,7 +710,7 @@ Bug Fixes
|
|||
- `#9355 <https://github.com/pytest-dev/pytest/issues/9355>`_: Fixed error message prints function decorators when using assert in Python 3.8 and above.
|
||||
|
||||
|
||||
- `#9396 <https://github.com/pytest-dev/pytest/issues/9396>`_: Ensure :attr:`pytest.Config.inifile` is available during the :func:`pytest_cmdline_main <_pytest.hookspec.pytest_cmdline_main>` hook (regression during ``7.0.0rc1``).
|
||||
- `#9396 <https://github.com/pytest-dev/pytest/issues/9396>`_: Ensure `pytest.Config.inifile` is available during the :hook:`pytest_cmdline_main` hook (regression during ``7.0.0rc1``).
|
||||
|
||||
|
||||
|
||||
|
@ -855,7 +855,7 @@ Deprecations
|
|||
- ``parser.addoption(..., type="int/string/float/complex")`` - use ``type=int`` etc. instead.
|
||||
|
||||
|
||||
- `#8447 <https://github.com/pytest-dev/pytest/issues/8447>`_: Defining a custom pytest node type which is both an :class:`pytest.Item <Item>` and a :class:`pytest.Collector <Collector>` (e.g. :class:`pytest.File <File>`) now issues a warning.
|
||||
- `#8447 <https://github.com/pytest-dev/pytest/issues/8447>`_: Defining a custom pytest node type which is both an :class:`~pytest.Item` and a :class:`~pytest.Collector` (e.g. :class:`~pytest.File`) now issues a warning.
|
||||
It was never sanely supported and triggers hard to debug errors.
|
||||
|
||||
See :ref:`the deprecation note <diamond-inheritance-deprecated>` for full details.
|
||||
|
@ -897,7 +897,7 @@ Features
|
|||
- `#7132 <https://github.com/pytest-dev/pytest/issues/7132>`_: Added two environment variables :envvar:`PYTEST_THEME` and :envvar:`PYTEST_THEME_MODE` to let the users customize the pygments theme used.
|
||||
|
||||
|
||||
- `#7259 <https://github.com/pytest-dev/pytest/issues/7259>`_: Added :meth:`cache.mkdir() <pytest.Cache.mkdir>`, which is similar to the existing :meth:`cache.makedir() <pytest.Cache.makedir>`,
|
||||
- `#7259 <https://github.com/pytest-dev/pytest/issues/7259>`_: Added :meth:`cache.mkdir() <pytest.Cache.mkdir>`, which is similar to the existing ``cache.makedir()``,
|
||||
but returns a :class:`pathlib.Path` instead of a legacy ``py.path.local``.
|
||||
|
||||
Added a ``paths`` type to :meth:`parser.addini() <pytest.Parser.addini>`,
|
||||
|
@ -923,7 +923,7 @@ Features
|
|||
- ``pytest.HookRecorder`` for the :class:`HookRecorder <pytest.HookRecorder>` type returned from :class:`~pytest.Pytester`.
|
||||
- ``pytest.RecordedHookCall`` for the :class:`RecordedHookCall <pytest.HookRecorder>` type returned from :class:`~pytest.HookRecorder`.
|
||||
- ``pytest.RunResult`` for the :class:`RunResult <pytest.RunResult>` type returned from :class:`~pytest.Pytester`.
|
||||
- ``pytest.LineMatcher`` for the :class:`LineMatcher <pytest.RunResult>` type used in :class:`~pytest.RunResult` and others.
|
||||
- ``pytest.LineMatcher`` for the :class:`LineMatcher <pytest.LineMatcher>` type used in :class:`~pytest.RunResult` and others.
|
||||
- ``pytest.TestReport`` for the :class:`TestReport <pytest.TestReport>` type used in various hooks.
|
||||
- ``pytest.CollectReport`` for the :class:`CollectReport <pytest.CollectReport>` type used in various hooks.
|
||||
|
||||
|
@ -956,7 +956,7 @@ Features
|
|||
|
||||
|
||||
- `#8251 <https://github.com/pytest-dev/pytest/issues/8251>`_: Implement ``Node.path`` as a ``pathlib.Path``. Both the old ``fspath`` and this new attribute gets set no matter whether ``path`` or ``fspath`` (deprecated) is passed to the constructor. It is a replacement for the ``fspath`` attribute (which represents the same path as ``py.path.local``). While ``fspath`` is not deprecated yet
|
||||
due to the ongoing migration of methods like :meth:`~_pytest.Item.reportinfo`, we expect to deprecate it in a future release.
|
||||
due to the ongoing migration of methods like :meth:`~pytest.Item.reportinfo`, we expect to deprecate it in a future release.
|
||||
|
||||
.. note::
|
||||
The name of the :class:`~_pytest.nodes.Node` arguments and attributes (the
|
||||
|
@ -988,7 +988,7 @@ Features
|
|||
See :ref:`plugin-stash` for details.
|
||||
|
||||
|
||||
- `#8953 <https://github.com/pytest-dev/pytest/issues/8953>`_: :class:`RunResult <_pytest.pytester.RunResult>` method :meth:`assert_outcomes <_pytest.pytester.RunResult.assert_outcomes>` now accepts a
|
||||
- `#8953 <https://github.com/pytest-dev/pytest/issues/8953>`_: :class:`~pytest.RunResult` method :meth:`~pytest.RunResult.assert_outcomes` now accepts a
|
||||
``warnings`` argument to assert the total number of warnings captured.
|
||||
|
||||
|
||||
|
@ -1000,7 +1000,7 @@ Features
|
|||
used.
|
||||
|
||||
|
||||
- `#9113 <https://github.com/pytest-dev/pytest/issues/9113>`_: :class:`RunResult <_pytest.pytester.RunResult>` method :meth:`assert_outcomes <_pytest.pytester.RunResult.assert_outcomes>` now accepts a
|
||||
- `#9113 <https://github.com/pytest-dev/pytest/issues/9113>`_: :class:`~pytest.RunResult` method :meth:`~pytest.RunResult.assert_outcomes` now accepts a
|
||||
``deselected`` argument to assert the total number of deselected tests.
|
||||
|
||||
|
||||
|
@ -1013,7 +1013,7 @@ Improvements
|
|||
|
||||
- `#7480 <https://github.com/pytest-dev/pytest/issues/7480>`_: A deprecation scheduled to be removed in a major version X (e.g. pytest 7, 8, 9, ...) now uses warning category `PytestRemovedInXWarning`,
|
||||
a subclass of :class:`~pytest.PytestDeprecationWarning`,
|
||||
instead of :class:`PytestDeprecationWarning` directly.
|
||||
instead of :class:`~pytest.PytestDeprecationWarning` directly.
|
||||
|
||||
See :ref:`backwards-compatibility` for more details.
|
||||
|
||||
|
@ -1052,7 +1052,7 @@ Improvements
|
|||
|
||||
- `#8803 <https://github.com/pytest-dev/pytest/issues/8803>`_: It is now possible to add colors to custom log levels on cli log.
|
||||
|
||||
By using :func:`add_color_level <_pytest.logging.add_color_level>` from a ``pytest_configure`` hook, colors can be added::
|
||||
By using ``add_color_level`` from a :hook:`pytest_configure` hook, colors can be added::
|
||||
|
||||
logging_plugin = config.pluginmanager.get_plugin('logging-plugin')
|
||||
logging_plugin.log_cli_handler.formatter.add_color_level(logging.INFO, 'cyan')
|
||||
|
@ -1117,7 +1117,7 @@ Bug Fixes
|
|||
|
||||
- `#8503 <https://github.com/pytest-dev/pytest/issues/8503>`_: :meth:`pytest.MonkeyPatch.syspath_prepend` no longer fails when
|
||||
``setuptools`` is not installed.
|
||||
It now only calls :func:`pkg_resources.fixup_namespace_packages` if
|
||||
It now only calls ``pkg_resources.fixup_namespace_packages`` if
|
||||
``pkg_resources`` was previously imported, because it is not needed otherwise.
|
||||
|
||||
|
||||
|
@ -1344,7 +1344,7 @@ Features
|
|||
|
||||
This is part of the movement to use :class:`pathlib.Path` objects internally, in order to remove the dependency to ``py`` in the future.
|
||||
|
||||
Internally, the old :class:`Testdir <_pytest.pytester.Testdir>` is now a thin wrapper around :class:`Pytester <_pytest.pytester.Pytester>`, preserving the old interface.
|
||||
Internally, the old ``pytest.Testdir`` is now a thin wrapper around :class:`~pytest.Pytester`, preserving the old interface.
|
||||
|
||||
|
||||
- :issue:`7695`: A new hook was added, `pytest_markeval_namespace` which should return a dictionary.
|
||||
|
@ -1382,7 +1382,7 @@ Features
|
|||
Improvements
|
||||
------------
|
||||
|
||||
- :issue:`1265`: Added an ``__str__`` implementation to the :class:`~pytest.pytester.LineMatcher` class which is returned from ``pytester.run_pytest().stdout`` and similar. It returns the entire output, like the existing ``str()`` method.
|
||||
- :issue:`1265`: Added an ``__str__`` implementation to the :class:`~pytest.LineMatcher` class which is returned from ``pytester.run_pytest().stdout`` and similar. It returns the entire output, like the existing ``str()`` method.
|
||||
|
||||
|
||||
- :issue:`2044`: Verbose mode now shows the reason that a test was skipped in the test's terminal line after the "SKIPPED", "XFAIL" or "XPASS".
|
||||
|
@ -1446,7 +1446,7 @@ Bug Fixes
|
|||
- :issue:`7911`: Directories created by by :fixture:`tmp_path` and :fixture:`tmpdir` are now considered stale after 3 days without modification (previous value was 3 hours) to avoid deleting directories still in use in long running test suites.
|
||||
|
||||
|
||||
- :issue:`7913`: Fixed a crash or hang in :meth:`pytester.spawn <_pytest.pytester.Pytester.spawn>` when the :mod:`readline` module is involved.
|
||||
- :issue:`7913`: Fixed a crash or hang in :meth:`pytester.spawn <pytest.Pytester.spawn>` when the :mod:`readline` module is involved.
|
||||
|
||||
|
||||
- :issue:`7951`: Fixed handling of recursive symlinks when collecting tests.
|
||||
|
@ -1563,7 +1563,7 @@ Deprecations
|
|||
if you use this and want a replacement.
|
||||
|
||||
|
||||
- :issue:`7255`: The :hook:`pytest_warning_captured` hook is deprecated in favor
|
||||
- :issue:`7255`: The ``pytest_warning_captured`` hook is deprecated in favor
|
||||
of :hook:`pytest_warning_recorded`, and will be removed in a future version.
|
||||
|
||||
|
||||
|
@ -1591,8 +1591,8 @@ Improvements
|
|||
- :issue:`7572`: When a plugin listed in ``required_plugins`` is missing or an unknown config key is used with ``--strict-config``, a simple error message is now shown instead of a stacktrace.
|
||||
|
||||
|
||||
- :issue:`7685`: Added two new attributes :attr:`rootpath <_pytest.config.Config.rootpath>` and :attr:`inipath <_pytest.config.Config.inipath>` to :class:`Config <_pytest.config.Config>`.
|
||||
These attributes are :class:`pathlib.Path` versions of the existing :attr:`rootdir <_pytest.config.Config.rootdir>` and :attr:`inifile <_pytest.config.Config.inifile>` attributes,
|
||||
- :issue:`7685`: Added two new attributes :attr:`rootpath <pytest.Config.rootpath>` and :attr:`inipath <pytest.Config.inipath>` to :class:`~pytest.Config`.
|
||||
These attributes are :class:`pathlib.Path` versions of the existing ``rootdir`` and ``inifile`` attributes,
|
||||
and should be preferred over them when possible.
|
||||
|
||||
|
||||
|
@ -1663,7 +1663,7 @@ Trivial/Internal Changes
|
|||
- :issue:`7587`: The dependency on the ``more-itertools`` package has been removed.
|
||||
|
||||
|
||||
- :issue:`7631`: The result type of :meth:`capfd.readouterr() <_pytest.capture.CaptureFixture.readouterr>` (and similar) is no longer a namedtuple,
|
||||
- :issue:`7631`: The result type of :meth:`capfd.readouterr() <pytest.CaptureFixture.readouterr>` (and similar) is no longer a namedtuple,
|
||||
but should behave like one in all respects. This was done for technical reasons.
|
||||
|
||||
|
||||
|
@ -2041,10 +2041,10 @@ Improvements
|
|||
- :issue:`7128`: `pytest --version` now displays just the pytest version, while `pytest --version --version` displays more verbose information including plugins. This is more consistent with how other tools show `--version`.
|
||||
|
||||
|
||||
- :issue:`7133`: :meth:`caplog.set_level() <_pytest.logging.LogCaptureFixture.set_level>` will now override any :confval:`log_level` set via the CLI or configuration file.
|
||||
- :issue:`7133`: :meth:`caplog.set_level() <pytest.LogCaptureFixture.set_level>` will now override any :confval:`log_level` set via the CLI or configuration file.
|
||||
|
||||
|
||||
- :issue:`7159`: :meth:`caplog.set_level() <_pytest.logging.LogCaptureFixture.set_level>` and :meth:`caplog.at_level() <_pytest.logging.LogCaptureFixture.at_level>` no longer affect
|
||||
- :issue:`7159`: :meth:`caplog.set_level() <pytest.LogCaptureFixture.set_level>` and :meth:`caplog.at_level() <pytest.LogCaptureFixture.at_level>` no longer affect
|
||||
the level of logs that are shown in the *Captured log report* report section.
|
||||
|
||||
|
||||
|
@ -2139,7 +2139,7 @@ Bug Fixes
|
|||
parameter when Python is called with the ``-bb`` flag.
|
||||
|
||||
|
||||
- :issue:`7143`: Fix :meth:`pytest.File.from_parent` so it forwards extra keyword arguments to the constructor.
|
||||
- :issue:`7143`: Fix :meth:`pytest.File.from_parent <_pytest.nodes.Node.from_parent>` so it forwards extra keyword arguments to the constructor.
|
||||
|
||||
|
||||
- :issue:`7145`: Classes with broken ``__getattribute__`` methods are displayed correctly during failures.
|
||||
|
@ -2390,7 +2390,7 @@ Improvements
|
|||
- :issue:`6384`: Make `--showlocals` work also with `--tb=short`.
|
||||
|
||||
|
||||
- :issue:`6653`: Add support for matching lines consecutively with :attr:`LineMatcher <_pytest.pytester.LineMatcher>`'s :func:`~_pytest.pytester.LineMatcher.fnmatch_lines` and :func:`~_pytest.pytester.LineMatcher.re_match_lines`.
|
||||
- :issue:`6653`: Add support for matching lines consecutively with :class:`~pytest.LineMatcher`'s :func:`~pytest.LineMatcher.fnmatch_lines` and :func:`~pytest.LineMatcher.re_match_lines`.
|
||||
|
||||
|
||||
- :issue:`6658`: Code is now highlighted in tracebacks when ``pygments`` is installed.
|
||||
|
@ -2458,7 +2458,7 @@ Bug Fixes
|
|||
- :issue:`6597`: Fix node ids which contain a parametrized empty-string variable.
|
||||
|
||||
|
||||
- :issue:`6646`: Assertion rewriting hooks are (re)stored for the current item, which fixes them being still used after e.g. pytester's :func:`testdir.runpytest <_pytest.pytester.Testdir.runpytest>` etc.
|
||||
- :issue:`6646`: Assertion rewriting hooks are (re)stored for the current item, which fixes them being still used after e.g. pytester's ``testdir.runpytest`` etc.
|
||||
|
||||
|
||||
- :issue:`6660`: :py:func:`pytest.exit` is handled when emitted from the :hook:`pytest_sessionfinish` hook. This includes quitting from a debugger.
|
||||
|
@ -2524,7 +2524,7 @@ Bug Fixes
|
|||
``multiprocessing`` module.
|
||||
|
||||
|
||||
- :issue:`6436`: :class:`FixtureDef <_pytest.fixtures.FixtureDef>` objects now properly register their finalizers with autouse and
|
||||
- :issue:`6436`: :class:`~pytest.FixtureDef` objects now properly register their finalizers with autouse and
|
||||
parameterized fixtures that execute before them in the fixture stack so they are torn
|
||||
down at the right times, and in the right order.
|
||||
|
||||
|
@ -2580,7 +2580,7 @@ Improvements
|
|||
Bug Fixes
|
||||
---------
|
||||
|
||||
- :issue:`5914`: pytester: fix :py:func:`~_pytest.pytester.LineMatcher.no_fnmatch_line` when used after positive matching.
|
||||
- :issue:`5914`: pytester: fix :py:func:`~pytest.LineMatcher.no_fnmatch_line` when used after positive matching.
|
||||
|
||||
|
||||
- :issue:`6082`: Fix line detection for doctest samples inside :py:class:`python:property` docstrings, as a workaround to :bpo:`17446`.
|
||||
|
@ -2644,8 +2644,8 @@ Features
|
|||
rather than implicitly.
|
||||
|
||||
|
||||
- :issue:`5914`: :fixture:`testdir` learned two new functions, :py:func:`~_pytest.pytester.LineMatcher.no_fnmatch_line` and
|
||||
:py:func:`~_pytest.pytester.LineMatcher.no_re_match_line`.
|
||||
- :issue:`5914`: :fixture:`testdir` learned two new functions, :py:func:`~pytest.LineMatcher.no_fnmatch_line` and
|
||||
:py:func:`~pytest.LineMatcher.no_re_match_line`.
|
||||
|
||||
The functions are used to ensure the captured text *does not* match the given
|
||||
pattern.
|
||||
|
@ -6497,7 +6497,7 @@ Changes
|
|||
* fix :issue:`2013`: turn RecordedWarning into ``namedtuple``,
|
||||
to give it a comprehensible repr while preventing unwarranted modification.
|
||||
|
||||
* fix :issue:`2208`: ensure an iteration limit for _pytest.compat.get_real_func.
|
||||
* fix :issue:`2208`: ensure an iteration limit for ``_pytest.compat.get_real_func``.
|
||||
Thanks :user:`RonnyPfannschmidt` for the report and PR.
|
||||
|
||||
* Hooks are now verified after collection is complete, rather than right after loading installed plugins. This
|
||||
|
|
|
@ -169,6 +169,50 @@ extlinks = {
|
|||
}
|
||||
|
||||
|
||||
nitpicky = True
|
||||
nitpick_ignore = [
|
||||
# TODO (fix in pluggy?)
|
||||
("py:class", "HookCaller"),
|
||||
("py:class", "HookspecMarker"),
|
||||
("py:exc", "PluginValidationError"),
|
||||
# Might want to expose/TODO (https://github.com/pytest-dev/pytest/issues/7469)
|
||||
("py:class", "ExceptionRepr"),
|
||||
("py:class", "Exit"),
|
||||
("py:class", "SubRequest"),
|
||||
("py:class", "SubRequest"),
|
||||
("py:class", "TerminalReporter"),
|
||||
("py:class", "_pytest._code.code.TerminalRepr"),
|
||||
("py:class", "_pytest.fixtures.FixtureFunctionMarker"),
|
||||
("py:class", "_pytest.logging.LogCaptureHandler"),
|
||||
("py:class", "_pytest.mark.structures.ParameterSet"),
|
||||
# Intentionally undocumented/private
|
||||
("py:class", "_pytest._code.code.Traceback"),
|
||||
("py:class", "_pytest._py.path.LocalPath"),
|
||||
("py:class", "_pytest.capture.CaptureResult"),
|
||||
("py:class", "_pytest.compat.NotSetType"),
|
||||
("py:class", "_pytest.python.PyCollector"),
|
||||
("py:class", "_pytest.python.PyobjMixin"),
|
||||
("py:class", "_pytest.python_api.RaisesContext"),
|
||||
("py:class", "_pytest.recwarn.WarningsChecker"),
|
||||
("py:class", "_pytest.reports.BaseReport"),
|
||||
# Undocumented third parties
|
||||
("py:class", "_tracing.TagTracerSub"),
|
||||
("py:class", "warnings.WarningMessage"),
|
||||
# Undocumented type aliases
|
||||
("py:class", "LEGACY_PATH"),
|
||||
("py:class", "_PluggyPlugin"),
|
||||
# TypeVars
|
||||
("py:class", "_pytest._code.code.E"),
|
||||
("py:class", "_pytest.fixtures.FixtureFunction"),
|
||||
("py:class", "_pytest.nodes._NodeType"),
|
||||
("py:class", "_pytest.python_api.E"),
|
||||
("py:class", "_pytest.recwarn.T"),
|
||||
("py:class", "_pytest.runner.TResult"),
|
||||
("py:obj", "_pytest.fixtures.FixtureValue"),
|
||||
("py:obj", "_pytest.stash.T"),
|
||||
]
|
||||
|
||||
|
||||
# -- Options for HTML output ---------------------------------------------------
|
||||
|
||||
sys.path.append(os.path.abspath("_themes"))
|
||||
|
|
|
@ -177,7 +177,7 @@ arguments they only pass on to the superclass.
|
|||
resolved in future versions as we slowly get rid of the :pypi:`py`
|
||||
dependency (see :issue:`9283` for a longer discussion).
|
||||
|
||||
Due to the ongoing migration of methods like :meth:`~_pytest.Item.reportinfo`
|
||||
Due to the ongoing migration of methods like :meth:`~pytest.Item.reportinfo`
|
||||
which still is expected to return a ``py.path.local`` object, nodes still have
|
||||
both ``fspath`` (``py.path.local``) and ``path`` (``pathlib.Path``) attributes,
|
||||
no matter what argument was used in the constructor. We expect to deprecate the
|
||||
|
@ -336,7 +336,7 @@ Diamond inheritance between :class:`pytest.Collector` and :class:`pytest.Item`
|
|||
|
||||
.. deprecated:: 7.0
|
||||
|
||||
Defining a custom pytest node type which is both an :class:`pytest.Item <Item>` and a :class:`pytest.Collector <Collector>` (e.g. :class:`pytest.File <File>`) now issues a warning.
|
||||
Defining a custom pytest node type which is both an :class:`~pytest.Item` and a :class:`~pytest.Collector` (e.g. :class:`~pytest.File`) now issues a warning.
|
||||
It was never sanely supported and triggers hard to debug errors.
|
||||
|
||||
Some plugins providing linting/code analysis have been using this as a hack.
|
||||
|
@ -348,8 +348,8 @@ Instead, a separate collector node should be used, which collects the item. See
|
|||
|
||||
.. _uncooperative-constructors-deprecated:
|
||||
|
||||
Constructors of custom :class:`pytest.Node` subclasses should take ``**kwargs``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Constructors of custom :class:`~_pytest.nodes.Node` subclasses should take ``**kwargs``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. deprecated:: 7.0
|
||||
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
Parametrizing tests
|
||||
=================================================
|
||||
|
||||
.. currentmodule:: _pytest.python
|
||||
|
||||
``pytest`` allows to easily parametrize test functions.
|
||||
For basic docs, see :ref:`parametrize-basics`.
|
||||
|
||||
|
@ -185,7 +183,7 @@ A quick port of "testscenarios"
|
|||
Here is a quick port to run tests configured with :pypi:`testscenarios`,
|
||||
an add-on from Robert Collins for the standard unittest framework. We
|
||||
only have to work a bit to construct the correct arguments for pytest's
|
||||
:py:func:`Metafunc.parametrize`:
|
||||
:py:func:`Metafunc.parametrize <pytest.Metafunc.parametrize>`:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
|
|
@ -168,7 +168,7 @@ Now we'll get feedback on a bad argument:
|
|||
|
||||
|
||||
If you need to provide more detailed error messages, you can use the
|
||||
``type`` parameter and raise ``pytest.UsageError``:
|
||||
``type`` parameter and raise :exc:`pytest.UsageError`:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ A note about fixture cleanup
|
|||
----------------------------
|
||||
|
||||
pytest does not do any special processing for :data:`SIGTERM <signal.SIGTERM>` and
|
||||
:data:`SIGQUIT <signal.SIGQUIT>` signals (:data:`SIGINT <signal.SIGINT>` is handled naturally
|
||||
``SIGQUIT`` signals (:data:`SIGINT <signal.SIGINT>` is handled naturally
|
||||
by the Python runtime via :class:`KeyboardInterrupt`), so fixtures that manage external resources which are important
|
||||
to be cleared when the Python process is terminated (by those signals) might leak resources.
|
||||
|
||||
|
|
|
@ -11,8 +11,6 @@ funcarg mechanism, see :ref:`historical funcargs and pytest.funcargs`.
|
|||
If you are new to pytest, then you can simply ignore this
|
||||
section and read the other sections.
|
||||
|
||||
.. currentmodule:: _pytest
|
||||
|
||||
Shortcomings of the previous ``pytest_funcarg__`` mechanism
|
||||
--------------------------------------------------------------
|
||||
|
||||
|
@ -46,7 +44,7 @@ There are several limitations and difficulties with this approach:
|
|||
|
||||
2. parametrizing the "db" resource is not straight forward:
|
||||
you need to apply a "parametrize" decorator or implement a
|
||||
:py:func:`~hookspec.pytest_generate_tests` hook
|
||||
:hook:`pytest_generate_tests` hook
|
||||
calling :py:func:`~pytest.Metafunc.parametrize` which
|
||||
performs parametrization at the places where the resource
|
||||
is used. Moreover, you need to modify the factory to use an
|
||||
|
@ -94,7 +92,7 @@ Direct parametrization of funcarg resource factories
|
|||
|
||||
Previously, funcarg factories could not directly cause parametrization.
|
||||
You needed to specify a ``@parametrize`` decorator on your test function
|
||||
or implement a ``pytest_generate_tests`` hook to perform
|
||||
or implement a :hook:`pytest_generate_tests` hook to perform
|
||||
parametrization, i.e. calling a test multiple times with different value
|
||||
sets. pytest-2.3 introduces a decorator for use on the factory itself:
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ More details can be found in the :pull:`original PR <3317>`.
|
|||
.. note::
|
||||
|
||||
in a future major release of pytest we will introduce class based markers,
|
||||
at which point markers will no longer be limited to instances of :py:class:`~_pytest.mark.Mark`.
|
||||
at which point markers will no longer be limited to instances of :py:class:`~pytest.Mark`.
|
||||
|
||||
|
||||
cache plugin integrated into the core
|
||||
|
|
|
@ -382,8 +382,6 @@ warnings: a WarningsRecorder instance. To view the recorded warnings, you can
|
|||
iterate over this instance, call ``len`` on it to get the number of recorded
|
||||
warnings, or index into it to get a particular recorded warning.
|
||||
|
||||
.. currentmodule:: _pytest.warnings
|
||||
|
||||
Full API: :class:`~_pytest.recwarn.WarningsRecorder`.
|
||||
|
||||
.. _`warns use cases`:
|
||||
|
|
|
@ -1271,7 +1271,7 @@ configured in multiple ways.
|
|||
Extending the previous example, we can flag the fixture to create two
|
||||
``smtp_connection`` fixture instances which will cause all tests using the fixture
|
||||
to run twice. The fixture function gets access to each parameter
|
||||
through the special :py:class:`request <FixtureRequest>` object:
|
||||
through the special :py:class:`request <pytest.FixtureRequest>` object:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
|
|
@ -59,10 +59,6 @@ The remaining hook functions will not be called in this case.
|
|||
hook wrappers: executing around other hooks
|
||||
-------------------------------------------------
|
||||
|
||||
.. currentmodule:: _pytest.core
|
||||
|
||||
|
||||
|
||||
pytest plugins can implement hook wrappers which wrap the execution
|
||||
of other hook implementations. A hook wrapper is a generator function
|
||||
which yields exactly once. When pytest invokes hooks it first executes
|
||||
|
@ -165,6 +161,7 @@ Here is the order of execution:
|
|||
It's possible to use ``tryfirst`` and ``trylast`` also on hook wrappers
|
||||
in which case it will influence the ordering of hook wrappers among each other.
|
||||
|
||||
.. _`declaringhooks`:
|
||||
|
||||
Declaring new hooks
|
||||
------------------------
|
||||
|
@ -174,13 +171,11 @@ Declaring new hooks
|
|||
This is a quick overview on how to add new hooks and how they work in general, but a more complete
|
||||
overview can be found in `the pluggy documentation <https://pluggy.readthedocs.io/en/latest/>`__.
|
||||
|
||||
.. currentmodule:: _pytest.hookspec
|
||||
|
||||
Plugins and ``conftest.py`` files may declare new hooks that can then be
|
||||
implemented by other plugins in order to alter behaviour or interact with
|
||||
the new plugin:
|
||||
|
||||
.. autofunction:: pytest_addhooks
|
||||
.. autofunction:: _pytest.hookspec.pytest_addhooks
|
||||
:noindex:
|
||||
|
||||
Hooks are usually declared as do-nothing functions that contain only
|
||||
|
|
|
@ -11,9 +11,6 @@ Fixtures reference
|
|||
.. seealso:: :ref:`about-fixtures`
|
||||
.. seealso:: :ref:`how-to-fixtures`
|
||||
|
||||
|
||||
.. currentmodule:: _pytest.python
|
||||
|
||||
.. _`Dependency injection`: https://en.wikipedia.org/wiki/Dependency_injection
|
||||
|
||||
|
||||
|
@ -76,15 +73,13 @@ Built-in fixtures
|
|||
:class:`pathlib.Path` objects.
|
||||
|
||||
:fixture:`tmpdir`
|
||||
Provide a :class:`py.path.local` object to a temporary
|
||||
Provide a `py.path.local <https://py.readthedocs.io/en/latest/path.html>`_ object to a temporary
|
||||
directory which is unique to each test function;
|
||||
replaced by :fixture:`tmp_path`.
|
||||
|
||||
.. _`py.path.local`: https://py.readthedocs.io/en/latest/path.html
|
||||
|
||||
:fixture:`tmpdir_factory`
|
||||
Make session-scoped temporary directories and return
|
||||
:class:`py.path.local` objects;
|
||||
``py.path.local`` objects;
|
||||
replaced by :fixture:`tmp_path_factory`.
|
||||
|
||||
|
||||
|
@ -98,7 +93,7 @@ Fixture availability is determined from the perspective of the test. A fixture
|
|||
is only available for tests to request if they are in the scope that fixture is
|
||||
defined in. If a fixture is defined inside a class, it can only be requested by
|
||||
tests inside that class. But if a fixture is defined inside the global scope of
|
||||
the module, than every test in that module, even if it's defined inside a class,
|
||||
the module, then every test in that module, even if it's defined inside a class,
|
||||
can request it.
|
||||
|
||||
Similarly, a test can also only be affected by an autouse fixture if that test
|
||||
|
|
|
@ -27,7 +27,7 @@ please refer to `the update script <https://github.com/pytest-dev/pytest/blob/ma
|
|||
creating a PDF, because otherwise the table gets far too wide for the
|
||||
page.
|
||||
|
||||
This list contains 1351 plugins.
|
||||
This list contains 1355 plugins.
|
||||
|
||||
.. only:: not latex
|
||||
|
||||
|
@ -67,7 +67,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-allure-intersection` Oct 27, 2022 N/A pytest (<5)
|
||||
:pypi:`pytest-allure-spec-coverage` The pytest plugin aimed to display test coverage of the specs(requirements) in Allure Oct 26, 2021 N/A pytest
|
||||
:pypi:`pytest-alphamoon` Static code checks used at Alphamoon Dec 30, 2021 5 - Production/Stable pytest (>=3.5.0)
|
||||
:pypi:`pytest-analyzer` this plugin allows to analyze tests in pytest project, collect test metadata and sync it with testomat.io TCM system Nov 08, 2023 N/A pytest >=7.3.1
|
||||
:pypi:`pytest-analyzer` this plugin allows to analyze tests in pytest project, collect test metadata and sync it with testomat.io TCM system Dec 06, 2023 N/A pytest >=7.3.1
|
||||
:pypi:`pytest-android` This fixture provides a configured "driver" for Android Automated Testing, using uiautomator2. Feb 21, 2019 3 - Alpha pytest
|
||||
:pypi:`pytest-anki` A pytest plugin for testing Anki add-ons Jul 31, 2022 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-annotate` pytest-annotate: Generate PyAnnotate annotations from your pytest tests. Jun 07, 2022 3 - Alpha pytest (<8.0.0,>=3.2.0)
|
||||
|
@ -86,7 +86,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-appengine` AppEngine integration that works well with pytest-django Feb 27, 2017 N/A N/A
|
||||
:pypi:`pytest-appium` Pytest plugin for appium Dec 05, 2019 N/A N/A
|
||||
:pypi:`pytest-approvaltests` A plugin to use approvaltests with pytest May 08, 2022 4 - Beta pytest (>=7.0.1)
|
||||
:pypi:`pytest-approvaltests-geo` Extension for ApprovalTests.Python specific to geo data verification Sep 06, 2023 5 - Production/Stable pytest
|
||||
:pypi:`pytest-approvaltests-geo` Extension for ApprovalTests.Python specific to geo data verification Dec 12, 2023 5 - Production/Stable pytest
|
||||
:pypi:`pytest-archon` Rule your architecture like a real developer Jul 11, 2023 5 - Production/Stable pytest (>=7.2)
|
||||
:pypi:`pytest-argus` pyest results colection plugin Jun 24, 2021 5 - Production/Stable pytest (>=6.2.4)
|
||||
:pypi:`pytest-arraydiff` pytest plugin to help with comparing array output from tests Nov 27, 2023 4 - Beta pytest >=4.6
|
||||
|
@ -105,7 +105,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-astropy-header` pytest plugin to add diagnostic information to the header of the test output Sep 06, 2022 3 - Alpha pytest (>=4.6)
|
||||
:pypi:`pytest-ast-transformer` May 04, 2019 3 - Alpha pytest
|
||||
:pypi:`pytest-async-generators` Pytest fixtures for async generators Jul 05, 2023 N/A N/A
|
||||
:pypi:`pytest-asyncio` Pytest support for asyncio Nov 27, 2023 4 - Beta pytest (>=7.0.0)
|
||||
:pypi:`pytest-asyncio` Pytest support for asyncio Dec 09, 2023 4 - Beta pytest >=7.0.0
|
||||
:pypi:`pytest-asyncio-cooperative` Run all your asynchronous tests cooperatively. Nov 30, 2023 N/A N/A
|
||||
:pypi:`pytest-asyncio-network-simulator` pytest-asyncio-network-simulator: Plugin for pytest for simulator the network in tests Jul 31, 2018 3 - Alpha pytest (<3.7.0,>=3.3.2)
|
||||
:pypi:`pytest-async-mongodb` pytest plugin for async MongoDB Oct 18, 2017 5 - Production/Stable pytest (>=2.5.2)
|
||||
|
@ -132,7 +132,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-bandit` A bandit plugin for pytest Feb 23, 2021 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-bandit-xayon` A bandit plugin for pytest Oct 17, 2022 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-base-url` pytest plugin for URL based testing Mar 27, 2022 5 - Production/Stable pytest (>=3.0.0,<8.0.0)
|
||||
:pypi:`pytest-bdd` BDD for pytest Oct 10, 2023 6 - Mature pytest (>=6.2.0)
|
||||
:pypi:`pytest-bdd` BDD for pytest Dec 02, 2023 6 - Mature pytest (>=6.2.0)
|
||||
:pypi:`pytest-bdd-html` pytest plugin to display BDD info in HTML test report Nov 22, 2022 3 - Alpha pytest (!=6.0.0,>=5.0)
|
||||
:pypi:`pytest-bdd-ng` BDD for pytest Jul 01, 2023 4 - Beta pytest (>=5.0)
|
||||
:pypi:`pytest-bdd-report` A pytest-bdd plugin for generating useful and informative BDD test reports Nov 15, 2023 N/A pytest >=7.1.3
|
||||
|
@ -190,7 +190,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-cassandra` Cassandra CCM Test Fixtures for pytest Nov 04, 2017 1 - Planning N/A
|
||||
:pypi:`pytest-catchlog` py.test plugin to catch log messages. This is a fork of pytest-capturelog. Jan 24, 2016 4 - Beta pytest (>=2.6)
|
||||
:pypi:`pytest-catch-server` Pytest plugin with server for catching HTTP requests. Dec 12, 2019 5 - Production/Stable N/A
|
||||
:pypi:`pytest-celery` pytest-celery a shim pytest plugin to enable celery.contrib.pytest May 06, 2021 N/A N/A
|
||||
:pypi:`pytest-celery` pytest-celery a shim pytest plugin to enable celery.contrib.pytest Dec 07, 2023 N/A N/A
|
||||
:pypi:`pytest-chainmaker` pytest plugin for chainmaker Oct 15, 2021 N/A N/A
|
||||
:pypi:`pytest-chalice` A set of py.test fixtures for AWS Chalice Jul 01, 2020 4 - Beta N/A
|
||||
:pypi:`pytest-change-assert` 修改报错中文为英文 Oct 19, 2022 N/A N/A
|
||||
|
@ -200,7 +200,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-chdir` A pytest fixture for changing current working directory Jan 28, 2020 N/A pytest (>=5.0.0,<6.0.0)
|
||||
:pypi:`pytest-check` A pytest plugin that allows multiple failures per test. Sep 22, 2023 N/A pytest
|
||||
:pypi:`pytest-checkdocs` check the README when running tests Jul 30, 2023 5 - Production/Stable pytest (>=6) ; extra == 'testing'
|
||||
:pypi:`pytest-checkipdb` plugin to check if there are ipdb debugs left Jul 22, 2020 5 - Production/Stable pytest (>=2.9.2)
|
||||
:pypi:`pytest-checkipdb` plugin to check if there are ipdb debugs left Dec 04, 2023 5 - Production/Stable pytest >=2.9.2
|
||||
:pypi:`pytest-check-library` check your missing library Jul 17, 2022 N/A N/A
|
||||
:pypi:`pytest-check-libs` check your missing library Jul 17, 2022 N/A N/A
|
||||
:pypi:`pytest-check-links` Check links in files Jul 29, 2020 N/A pytest>=7.0
|
||||
|
@ -252,7 +252,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-contexts` A plugin to run tests written with the Contexts framework using pytest May 19, 2021 4 - Beta N/A
|
||||
:pypi:`pytest-cookies` The pytest plugin for your Cookiecutter templates. 🍪 Mar 22, 2023 5 - Production/Stable pytest (>=3.9.0)
|
||||
:pypi:`pytest-copie` The pytest plugin for your copier templates 📒 Nov 14, 2023 3 - Alpha pytest
|
||||
:pypi:`pytest-copier` A pytest plugin to help testing Copier templates Jun 23, 2023 4 - Beta pytest>=7.1.2
|
||||
:pypi:`pytest-copier` A pytest plugin to help testing Copier templates Dec 11, 2023 4 - Beta pytest>=7.3.2
|
||||
:pypi:`pytest-couchdbkit` py.test extension for per-test couchdb databases using couchdbkit Apr 17, 2012 N/A N/A
|
||||
:pypi:`pytest-count` count erros and send email Jan 12, 2018 4 - Beta N/A
|
||||
:pypi:`pytest-cov` Pytest plugin for measuring coverage. May 24, 2023 5 - Production/Stable pytest (>=4.6)
|
||||
|
@ -328,7 +328,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-diffeo` A package to prevent Dependency Confusion attacks against Yandex. Feb 10, 2023 N/A N/A
|
||||
:pypi:`pytest-diff-selector` Get tests affected by code changes (using git) Feb 24, 2022 4 - Beta pytest (>=6.2.2) ; extra == 'all'
|
||||
:pypi:`pytest-difido` PyTest plugin for generating Difido reports Oct 23, 2022 4 - Beta pytest (>=4.0.0)
|
||||
:pypi:`pytest-dir-equal` pytest-dir-equals is a pytest plugin providing helpers to assert directories equality allowing golden testing Jun 23, 2023 4 - Beta pytest>=7.1.2
|
||||
:pypi:`pytest-dir-equal` pytest-dir-equals is a pytest plugin providing helpers to assert directories equality allowing golden testing Dec 11, 2023 4 - Beta pytest>=7.3.2
|
||||
:pypi:`pytest-disable` pytest plugin to disable a test and skip it from testrun Sep 10, 2015 4 - Beta N/A
|
||||
:pypi:`pytest-disable-plugin` Disable plugins per test Feb 28, 2019 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-discord` A pytest plugin to notify test results to a Discord channel. Oct 18, 2023 4 - Beta pytest !=6.0.0,<8,>=3.3.2
|
||||
|
@ -377,9 +377,9 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-doctest-custom` A py.test plugin for customizing string representations of doctest results. Jul 25, 2016 4 - Beta N/A
|
||||
:pypi:`pytest-doctest-ellipsis-markers` Setup additional values for ELLIPSIS_MARKER for doctests Jan 12, 2018 4 - Beta N/A
|
||||
:pypi:`pytest-doctest-import` A simple pytest plugin to import names and add them to the doctest namespace. Nov 13, 2018 4 - Beta pytest (>=3.3.0)
|
||||
:pypi:`pytest-doctestplus` Pytest plugin with advanced doctest features. Aug 11, 2023 3 - Alpha pytest >=4.6
|
||||
:pypi:`pytest-doctestplus` Pytest plugin with advanced doctest features. Dec 13, 2023 5 - Production/Stable pytest >=4.6
|
||||
:pypi:`pytest-dogu-report` pytest plugin for dogu report Jul 07, 2023 N/A N/A
|
||||
:pypi:`pytest-dogu-sdk` pytest plugin for the Dogu Nov 20, 2023 N/A N/A
|
||||
:pypi:`pytest-dogu-sdk` pytest plugin for the Dogu Dec 14, 2023 N/A N/A
|
||||
:pypi:`pytest-dolphin` Some extra stuff that we use ininternally Nov 30, 2016 4 - Beta pytest (==3.0.4)
|
||||
:pypi:`pytest-donde` record pytest session characteristics per test item (coverage and duration) into a persistent file and use them in your own plugin or script. Oct 01, 2023 4 - Beta pytest >=7.3.1
|
||||
:pypi:`pytest-doorstop` A pytest plugin for adding test results into doorstop items. Jun 09, 2020 4 - Beta pytest (>=3.5.0)
|
||||
|
@ -403,21 +403,21 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-easy-server` Pytest plugin for easy testing against servers May 01, 2021 4 - Beta pytest (<5.0.0,>=4.3.1) ; python_version < "3.5"
|
||||
:pypi:`pytest-ebics-sandbox` A pytest plugin for testing against an EBICS sandbox server. Requires docker. Aug 15, 2022 N/A N/A
|
||||
:pypi:`pytest-ec2` Pytest execution on EC2 instance Oct 22, 2019 3 - Alpha N/A
|
||||
:pypi:`pytest-echo` pytest plugin with mechanisms for echoing environment variables, package version and generic attributes Jan 08, 2020 5 - Production/Stable N/A
|
||||
:pypi:`pytest-echo` pytest plugin with mechanisms for echoing environment variables, package version and generic attributes Dec 05, 2023 5 - Production/Stable pytest >=2.2
|
||||
:pypi:`pytest-ekstazi` Pytest plugin to select test using Ekstazi algorithm Sep 10, 2022 N/A pytest
|
||||
:pypi:`pytest-elasticsearch` Elasticsearch fixtures and fixture factories for Pytest. Sep 13, 2023 5 - Production/Stable pytest >=7.0
|
||||
:pypi:`pytest-elements` Tool to help automate user interfaces Jan 13, 2021 N/A pytest (>=5.4,<6.0)
|
||||
:pypi:`pytest-eliot` An eliot plugin for pytest. Aug 31, 2022 1 - Planning pytest (>=5.4.0)
|
||||
:pypi:`pytest-elk-reporter` A simple plugin to use with pytest Jan 24, 2021 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-email` Send execution result email Jul 08, 2020 N/A pytest
|
||||
:pypi:`pytest-embedded` A pytest plugin that designed for embedded testing. Nov 27, 2023 5 - Production/Stable pytest>=7.0
|
||||
:pypi:`pytest-embedded-arduino` Make pytest-embedded plugin work with Arduino. Nov 27, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-idf` Make pytest-embedded plugin work with ESP-IDF. Nov 27, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-jtag` Make pytest-embedded plugin work with JTAG. Nov 27, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-qemu` Make pytest-embedded plugin work with QEMU. Nov 27, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-serial` Make pytest-embedded plugin work with Serial. Nov 27, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-serial-esp` Make pytest-embedded plugin work with Espressif target boards. Nov 27, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-wokwi` Make pytest-embedded plugin work with the Wokwi CLI. Nov 27, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded` A pytest plugin that designed for embedded testing. Dec 04, 2023 5 - Production/Stable pytest>=7.0
|
||||
:pypi:`pytest-embedded-arduino` Make pytest-embedded plugin work with Arduino. Dec 04, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-idf` Make pytest-embedded plugin work with ESP-IDF. Dec 04, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-jtag` Make pytest-embedded plugin work with JTAG. Dec 04, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-qemu` Make pytest-embedded plugin work with QEMU. Dec 04, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-serial` Make pytest-embedded plugin work with Serial. Dec 04, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-serial-esp` Make pytest-embedded plugin work with Espressif target boards. Dec 04, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embedded-wokwi` Make pytest-embedded plugin work with the Wokwi CLI. Dec 04, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-embrace` 💝 Dataclasses-as-tests. Describe the runtime once and multiply coverage with no boilerplate. Mar 25, 2023 N/A pytest (>=7.0,<8.0)
|
||||
:pypi:`pytest-emoji` A pytest plugin that adds emojis to your test result report Feb 19, 2019 4 - Beta pytest (>=4.2.1)
|
||||
:pypi:`pytest-emoji-output` Pytest plugin to represent test output with emoji support Apr 09, 2023 4 - Beta pytest (==7.0.1)
|
||||
|
@ -527,16 +527,16 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-funparam` An alternative way to parametrize test cases. Dec 02, 2021 4 - Beta pytest >=4.6.0
|
||||
:pypi:`pytest-fxa` pytest plugin for Firefox Accounts Aug 28, 2018 5 - Production/Stable N/A
|
||||
:pypi:`pytest-fxtest` Oct 27, 2020 N/A N/A
|
||||
:pypi:`pytest-fzf` fzf-based test selector for pytest Nov 28, 2023 4 - Beta pytest >=6.0.0
|
||||
:pypi:`pytest-fzf` fzf-based test selector for pytest Dec 15, 2023 4 - Beta pytest >=6.0.0
|
||||
:pypi:`pytest-gather-fixtures` set up asynchronous pytest fixtures concurrently Apr 12, 2022 N/A pytest (>=6.0.0)
|
||||
:pypi:`pytest-gc` The garbage collector plugin for py.test Feb 01, 2018 N/A N/A
|
||||
:pypi:`pytest-gcov` Uses gcov to measure test coverage of a C library Feb 01, 2018 3 - Alpha N/A
|
||||
:pypi:`pytest-gee` The Python plugin for your GEE based packages. Nov 22, 2023 3 - Alpha pytest; extra == 'test'
|
||||
:pypi:`pytest-gee` The Python plugin for your GEE based packages. Dec 04, 2023 3 - Alpha pytest
|
||||
:pypi:`pytest-gevent` Ensure that gevent is properly patched when invoking pytest Feb 25, 2020 N/A pytest
|
||||
:pypi:`pytest-gherkin` A flexible framework for executing BDD gherkin tests Jul 27, 2019 3 - Alpha pytest (>=5.0.0)
|
||||
:pypi:`pytest-gh-log-group` pytest plugin for gh actions Jan 11, 2022 3 - Alpha pytest
|
||||
:pypi:`pytest-ghostinspector` For finding/executing Ghost Inspector tests May 17, 2016 3 - Alpha N/A
|
||||
:pypi:`pytest-girder` A set of pytest fixtures for testing Girder applications. Nov 20, 2023 N/A N/A
|
||||
:pypi:`pytest-girder` A set of pytest fixtures for testing Girder applications. Dec 14, 2023 N/A N/A
|
||||
:pypi:`pytest-git` Git repository fixture for py.test May 28, 2019 5 - Production/Stable pytest
|
||||
:pypi:`pytest-gitconfig` Provide a gitconfig sandbox for testing Oct 15, 2023 4 - Beta pytest>=7.1.2
|
||||
:pypi:`pytest-gitcov` Pytest plugin for reporting on coverage of the last git commit. Jan 11, 2020 2 - Pre-Alpha N/A
|
||||
|
@ -574,10 +574,10 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-history` Pytest plugin to keep a history of your pytest runs Nov 20, 2023 N/A pytest (>=7.4.3,<8.0.0)
|
||||
:pypi:`pytest-home` Home directory fixtures Oct 09, 2023 5 - Production/Stable pytest
|
||||
:pypi:`pytest-homeassistant` A pytest plugin for use with homeassistant custom components. Aug 12, 2020 4 - Beta N/A
|
||||
:pypi:`pytest-homeassistant-custom-component` Experimental package to automatically extract test plugins for Home Assistant custom components Dec 01, 2023 3 - Alpha pytest ==7.4.3
|
||||
:pypi:`pytest-homeassistant-custom-component` Experimental package to automatically extract test plugins for Home Assistant custom components Dec 15, 2023 3 - Alpha pytest ==7.4.3
|
||||
:pypi:`pytest-honey` A simple plugin to use with pytest Jan 07, 2022 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-honors` Report on tests that honor constraints, and guard against regressions Mar 06, 2020 4 - Beta N/A
|
||||
:pypi:`pytest-hot-reloading` Dec 01, 2023 N/A N/A
|
||||
:pypi:`pytest-hot-reloading` Dec 13, 2023 N/A N/A
|
||||
:pypi:`pytest-hot-test` A plugin that tracks test changes Dec 10, 2022 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-houdini` pytest plugin for testing code in Houdini. Nov 10, 2023 N/A pytest
|
||||
:pypi:`pytest-hoverfly` Simplify working with Hoverfly from pytest Jan 30, 2023 N/A pytest (>=5.0)
|
||||
|
@ -594,7 +594,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-html-thread` pytest plugin for generating HTML reports Dec 29, 2020 5 - Production/Stable N/A
|
||||
:pypi:`pytest-http` Fixture "http" for http requests Dec 05, 2019 N/A N/A
|
||||
:pypi:`pytest-httpbin` Easily test your HTTP library against a local copy of httpbin May 08, 2023 5 - Production/Stable pytest ; extra == 'test'
|
||||
:pypi:`pytest-httpdbg` A pytest plugin to record HTTP(S) requests with stack trace Nov 03, 2023 3 - Alpha pytest >=7.0.0
|
||||
:pypi:`pytest-httpdbg` A pytest plugin to record HTTP(S) requests with stack trace Dec 09, 2023 3 - Alpha pytest >=7.0.0
|
||||
:pypi:`pytest-http-mocker` Pytest plugin for http mocking (via https://github.com/vilus/mocker) Oct 20, 2019 N/A N/A
|
||||
:pypi:`pytest-httpretty` A thin wrapper of HTTPretty for pytest Feb 16, 2014 3 - Alpha N/A
|
||||
:pypi:`pytest-httpserver` pytest-httpserver is a httpserver for pytest May 22, 2023 3 - Alpha N/A
|
||||
|
@ -604,11 +604,11 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-hue` Visualise PyTest status via your Phillips Hue lights May 09, 2019 N/A N/A
|
||||
:pypi:`pytest-hylang` Pytest plugin to allow running tests written in hylang Mar 28, 2021 N/A pytest
|
||||
:pypi:`pytest-hypo-25` help hypo module for pytest Jan 12, 2020 3 - Alpha N/A
|
||||
:pypi:`pytest-iam` A fully functional OAUTH2 / OpenID Connect (OIDC) server to be used in your testsuite Aug 31, 2023 3 - Alpha pytest (>=7.0.0,<8.0.0)
|
||||
:pypi:`pytest-iam` A fully functional OAUTH2 / OpenID Connect (OIDC) server to be used in your testsuite Dec 15, 2023 3 - Alpha pytest (>=7.0.0,<8.0.0)
|
||||
:pypi:`pytest-ibutsu` A plugin to sent pytest results to an Ibutsu server Aug 05, 2022 4 - Beta pytest>=7.1
|
||||
:pypi:`pytest-icdiff` use icdiff for better error messages in pytest assertions Sep 20, 2023 4 - Beta pytest
|
||||
:pypi:`pytest-icdiff` use icdiff for better error messages in pytest assertions Dec 05, 2023 4 - Beta pytest
|
||||
:pypi:`pytest-idapro` A pytest plugin for idapython. Allows a pytest setup to run tests outside and inside IDA in an automated manner by runnig pytest inside IDA and by mocking idapython api Nov 03, 2018 N/A N/A
|
||||
:pypi:`pytest-idem` A pytest plugin to help with testing idem projects Jun 23, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-idem` A pytest plugin to help with testing idem projects Dec 13, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-idempotent` Pytest plugin for testing function idempotence. Jul 25, 2022 N/A N/A
|
||||
:pypi:`pytest-ignore-flaky` ignore failures from flaky tests (pytest plugin) Oct 11, 2023 5 - Production/Stable pytest >=6.0
|
||||
:pypi:`pytest-ignore-test-results` A pytest plugin to ignore test results. Aug 17, 2023 2 - Pre-Alpha pytest>=7.0
|
||||
|
@ -622,8 +622,8 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-infrastructure` pytest stack validation prior to testing executing Apr 12, 2020 4 - Beta N/A
|
||||
:pypi:`pytest-ini` Reuse pytest.ini to store env variables Apr 26, 2022 N/A N/A
|
||||
:pypi:`pytest-inline` A pytest plugin for writing inline tests. Oct 19, 2023 4 - Beta pytest >=7.0.0
|
||||
:pypi:`pytest-inmanta` A py.test plugin providing fixtures to simplify inmanta modules testing. Nov 29, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-inmanta-extensions` Inmanta tests package Oct 13, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-inmanta` A py.test plugin providing fixtures to simplify inmanta modules testing. Dec 13, 2023 5 - Production/Stable pytest
|
||||
:pypi:`pytest-inmanta-extensions` Inmanta tests package Dec 11, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-inmanta-lsm` Common fixtures for inmanta LSM related modules Nov 29, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-inmanta-yang` Common fixtures used in inmanta yang related modules Jun 16, 2022 4 - Beta N/A
|
||||
:pypi:`pytest-Inomaly` A simple image diff plugin for pytest Feb 13, 2018 4 - Beta N/A
|
||||
|
@ -634,7 +634,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-integration-mark` Automatic integration test marking and excluding plugin for pytest May 22, 2023 N/A pytest (>=5.2)
|
||||
:pypi:`pytest-interactive` A pytest plugin for console based interactive test selection just after the collection phase Nov 30, 2017 3 - Alpha N/A
|
||||
:pypi:`pytest-intercept-remote` Pytest plugin for intercepting outgoing connection requests during pytest run. May 24, 2021 4 - Beta pytest (>=4.6)
|
||||
:pypi:`pytest-interface-tester` Pytest plugin for checking charm relation interface protocol compliance. Nov 29, 2023 4 - Beta pytest
|
||||
:pypi:`pytest-interface-tester` Pytest plugin for checking charm relation interface protocol compliance. Dec 05, 2023 4 - Beta pytest
|
||||
:pypi:`pytest-invenio` Pytest fixtures for Invenio. Oct 31, 2023 5 - Production/Stable pytest <7.2.0,>=6
|
||||
:pypi:`pytest-involve` Run tests covering a specific file or changeset Feb 02, 2020 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-ipdb` A py.test plug-in to enable drop to ipdb debugger on test failure. Mar 20, 2013 2 - Pre-Alpha N/A
|
||||
|
@ -661,7 +661,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-json-report` A pytest plugin to report test results as JSON files Mar 15, 2022 4 - Beta pytest (>=3.8.0)
|
||||
:pypi:`pytest-json-report-wip` A pytest plugin to report test results as JSON files Oct 28, 2023 4 - Beta pytest >=3.8.0
|
||||
:pypi:`pytest-jtr` pytest plugin supporting json test report output Nov 29, 2022 N/A pytest (>=7.1.2,<8.0.0)
|
||||
:pypi:`pytest-jupyter` A pytest plugin for testing Jupyter libraries and extensions. Mar 30, 2023 4 - Beta pytest
|
||||
:pypi:`pytest-jupyter` A pytest plugin for testing Jupyter libraries and extensions. Dec 05, 2023 4 - Beta pytest
|
||||
:pypi:`pytest-jupyterhub` A reusable JupyterHub pytest plugin Apr 25, 2023 5 - Production/Stable pytest
|
||||
:pypi:`pytest-kafka` Zookeeper, Kafka server, and Kafka consumer fixtures for Pytest Jun 14, 2023 N/A pytest
|
||||
:pypi:`pytest-kafkavents` A plugin to send pytest events to Kafka Sep 08, 2021 4 - Beta pytest
|
||||
|
@ -690,7 +690,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-leaks` A pytest plugin to trace resource leaks. Nov 27, 2019 1 - Planning N/A
|
||||
:pypi:`pytest-level` Select tests of a given level or lower Oct 21, 2019 N/A pytest
|
||||
:pypi:`pytest-libfaketime` A python-libfaketime plugin for pytest. Dec 22, 2018 4 - Beta pytest (>=3.0.0)
|
||||
:pypi:`pytest-libiio` A pytest plugin to manage interfacing with libiio contexts Jul 11, 2022 4 - Beta N/A
|
||||
:pypi:`pytest-libiio` A pytest plugin to manage interfacing with libiio contexts Dec 06, 2023 4 - Beta N/A
|
||||
:pypi:`pytest-libnotify` Pytest plugin that shows notifications about the test run Apr 02, 2021 3 - Alpha pytest
|
||||
:pypi:`pytest-ligo` Jan 16, 2020 4 - Beta N/A
|
||||
:pypi:`pytest-lineno` A pytest plugin to show the line numbers of test functions Dec 04, 2020 N/A pytest
|
||||
|
@ -738,7 +738,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-mccabe` pytest plugin to run the mccabe code complexity checker. Jul 22, 2020 3 - Alpha pytest (>=5.4.0)
|
||||
:pypi:`pytest-md` Plugin for generating Markdown reports for pytest results Jul 11, 2019 3 - Alpha pytest (>=4.2.1)
|
||||
:pypi:`pytest-md-report` A pytest plugin to make a test results report with Markdown table format. Oct 08, 2023 4 - Beta pytest !=6.0.0,<8,>=3.3.2
|
||||
:pypi:`pytest-meilisearch` Pytest helpers for testing projects using Meilisearch Nov 06, 2023 N/A pytest (>=7.4.3)
|
||||
:pypi:`pytest-meilisearch` Pytest helpers for testing projects using Meilisearch Dec 07, 2023 N/A pytest (>=7.4.3)
|
||||
:pypi:`pytest-memlog` Log memory usage during tests May 03, 2023 N/A pytest (>=7.3.0,<8.0.0)
|
||||
:pypi:`pytest-memprof` Estimates memory consumption of test functions Mar 29, 2019 4 - Beta N/A
|
||||
:pypi:`pytest-memray` A simple plugin to use with pytest Aug 23, 2023 N/A pytest>=7.2
|
||||
|
@ -749,10 +749,11 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-messenger` Pytest to Slack reporting plugin Nov 24, 2022 5 - Production/Stable N/A
|
||||
:pypi:`pytest-metadata` pytest plugin for test session metadata May 27, 2023 5 - Production/Stable pytest>=7.0.0
|
||||
:pypi:`pytest-metrics` Custom metrics report for pytest Apr 04, 2020 N/A pytest
|
||||
:pypi:`pytest-mh` Pytest multihost plugin Nov 21, 2023 N/A pytest
|
||||
:pypi:`pytest-mh` Pytest multihost plugin Dec 07, 2023 N/A pytest
|
||||
:pypi:`pytest-mimesis` Mimesis integration with the pytest test runner Mar 21, 2020 5 - Production/Stable pytest (>=4.2)
|
||||
:pypi:`pytest-minecraft` A pytest plugin for running tests against Minecraft releases Apr 06, 2022 N/A pytest (>=6.0.1)
|
||||
:pypi:`pytest-mini` A plugin to test mp Feb 06, 2023 N/A pytest (>=7.2.0,<8.0.0)
|
||||
:pypi:`pytest-minio-mock` A pytest plugin for mocking Minio S3 interactions Dec 06, 2023 N/A pytest >=5.0.0
|
||||
:pypi:`pytest-missing-fixtures` Pytest plugin that creates missing fixtures Oct 14, 2020 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-ml` Test your machine learning! May 04, 2019 4 - Beta N/A
|
||||
:pypi:`pytest-mocha` pytest plugin to display test execution output like a mochajs Apr 02, 2020 4 - Beta pytest (>=5.4.0)
|
||||
|
@ -832,6 +833,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-ogsm-plugin` 针对特定项目定制化插件,优化了pytest报告展示方式,并添加了项目所需特定参数 May 16, 2023 N/A N/A
|
||||
:pypi:`pytest-ok` The ultimate pytest output plugin Apr 01, 2019 4 - Beta N/A
|
||||
:pypi:`pytest-only` Use @pytest.mark.only to run a single test Jun 14, 2022 5 - Production/Stable pytest (<7.1); python_version <= "3.6"
|
||||
:pypi:`pytest-oof` A Pytest plugin providing structured, programmatic access to a test run's results Dec 11, 2023 4 - Beta N/A
|
||||
:pypi:`pytest-oot` Run object-oriented tests in a simple format Sep 18, 2016 4 - Beta N/A
|
||||
:pypi:`pytest-openfiles` Pytest plugin for detecting inadvertent open file handles Apr 16, 2020 3 - Alpha pytest (>=4.6)
|
||||
:pypi:`pytest-opentelemetry` A pytest plugin for instrumenting test runs via OpenTelemetry Oct 01, 2023 N/A pytest
|
||||
|
@ -942,7 +944,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-pydocstyle` pytest plugin to run pydocstyle Jan 05, 2023 3 - Alpha N/A
|
||||
:pypi:`pytest-pylint` pytest plugin to check source code with pylint Oct 06, 2023 5 - Production/Stable pytest >=7.0
|
||||
:pypi:`pytest-pymysql-autorecord` Record PyMySQL queries and mock with the stored data. Sep 02, 2022 N/A N/A
|
||||
:pypi:`pytest-pyodide` Pytest plugin for testing applications that use Pyodide Nov 18, 2023 N/A pytest
|
||||
:pypi:`pytest-pyodide` Pytest plugin for testing applications that use Pyodide Dec 09, 2023 N/A pytest
|
||||
:pypi:`pytest-pypi` Easily test your HTTP library against a local copy of pypi Mar 04, 2018 3 - Alpha N/A
|
||||
:pypi:`pytest-pypom-navigation` Core engine for cookiecutter-qa and pytest-play packages Feb 18, 2019 4 - Beta pytest (>=3.0.7)
|
||||
:pypi:`pytest-pyppeteer` A plugin to run pyppeteer in pytest Apr 28, 2022 N/A pytest (>=6.2.5,<7.0.0)
|
||||
|
@ -983,7 +985,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-readme` Test your README.md file Sep 02, 2022 5 - Production/Stable N/A
|
||||
:pypi:`pytest-reana` Pytest fixtures for REANA. Nov 30, 2023 3 - Alpha N/A
|
||||
:pypi:`pytest-recorder` Pytest plugin, meant to facilitate unit tests writing for tools consumming Web APIs. Nov 21, 2023 N/A N/A
|
||||
:pypi:`pytest-recording` A pytest plugin that allows you recording of network interactions via VCR.py Jul 31, 2023 4 - Beta pytest>=3.5.0
|
||||
:pypi:`pytest-recording` A pytest plugin that allows you recording of network interactions via VCR.py Dec 06, 2023 4 - Beta pytest>=3.5.0
|
||||
:pypi:`pytest-recordings` Provides pytest plugins for reporting request/response traffic, screenshots, and more to ReportPortal Aug 13, 2020 N/A N/A
|
||||
:pypi:`pytest-redis` Redis fixtures and fixture factories for Pytest. Apr 19, 2023 5 - Production/Stable pytest (>=6.2)
|
||||
:pypi:`pytest-redislite` Pytest plugin for testing code using Redis Apr 05, 2022 4 - Beta pytest
|
||||
|
@ -1013,7 +1015,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-reportlog` Replacement for the --resultlog option, focused in simplicity and extensibility May 22, 2023 3 - Alpha pytest
|
||||
:pypi:`pytest-report-me` A pytest plugin to generate report. Dec 31, 2020 N/A pytest
|
||||
:pypi:`pytest-report-parameters` pytest plugin for adding tests' parameters to junit report Jun 18, 2020 3 - Alpha pytest (>=2.4.2)
|
||||
:pypi:`pytest-reportportal` Agent for Reporting results of tests to the Report Portal Oct 17, 2023 N/A pytest >=3.8.0
|
||||
:pypi:`pytest-reportportal` Agent for Reporting results of tests to the Report Portal Dec 06, 2023 N/A pytest >=3.8.0
|
||||
:pypi:`pytest-report-stream` A pytest plugin which allows to stream test reports at runtime Oct 22, 2023 4 - Beta N/A
|
||||
:pypi:`pytest-reqs` pytest plugin to check pinned requirements May 12, 2019 N/A pytest (>=2.4.2)
|
||||
:pypi:`pytest-requests` A simple plugin to use with pytest Jun 24, 2019 4 - Beta pytest (>=3.5.0)
|
||||
|
@ -1026,7 +1028,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-rerunfailures` pytest plugin to re-run tests to eliminate flaky failures Nov 22, 2023 5 - Production/Stable pytest >=7
|
||||
:pypi:`pytest-rerunfailures-all-logs` pytest plugin to re-run tests to eliminate flaky failures Mar 07, 2022 5 - Production/Stable N/A
|
||||
:pypi:`pytest-reserial` Pytest fixture for recording and replaying serial port traffic. Aug 31, 2023 4 - Beta pytest
|
||||
:pypi:`pytest-resilient-circuits` Resilient Circuits fixtures for PyTest Nov 22, 2023 N/A pytest ~=4.6 ; python_version == "2.7"
|
||||
:pypi:`pytest-resilient-circuits` Resilient Circuits fixtures for PyTest Dec 11, 2023 N/A pytest ~=4.6 ; python_version == "2.7"
|
||||
:pypi:`pytest-resource` Load resource fixture plugin to use with pytest Nov 14, 2018 4 - Beta N/A
|
||||
:pypi:`pytest-resource-path` Provides path for uniform access to test resources in isolated directory May 01, 2021 5 - Production/Stable pytest (>=3.5.0)
|
||||
:pypi:`pytest-resource-usage` Pytest plugin for reporting running time and peak memory usage Nov 06, 2022 5 - Production/Stable pytest>=7.0.0
|
||||
|
@ -1059,7 +1061,6 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-ruff` pytest plugin to check ruff requirements. Oct 31, 2023 4 - Beta N/A
|
||||
:pypi:`pytest-run-changed` Pytest plugin that runs changed tests only Apr 02, 2021 3 - Alpha pytest
|
||||
:pypi:`pytest-runfailed` implement a --failed option for pytest Mar 24, 2016 N/A N/A
|
||||
:pypi:`pytest-runner` Invoke py.test as distutils command with dependency resolution Feb 25, 2022 5 - Production/Stable pytest (>=6) ; extra == 'testing'
|
||||
:pypi:`pytest-run-subprocess` Pytest Plugin for running and testing subprocesses. Nov 12, 2022 5 - Production/Stable pytest
|
||||
:pypi:`pytest-runtime-types` Checks type annotations on runtime while running tests. Feb 09, 2023 N/A pytest
|
||||
:pypi:`pytest-runtime-xfail` Call runtime_xfail() to mark running test as xfail. Aug 26, 2021 N/A pytest>=5.0.0
|
||||
|
@ -1073,7 +1074,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-sanic` a pytest plugin for Sanic Oct 25, 2021 N/A pytest (>=5.2)
|
||||
:pypi:`pytest-sanity` Dec 07, 2020 N/A N/A
|
||||
:pypi:`pytest-sa-pg` May 14, 2019 N/A N/A
|
||||
:pypi:`pytest-sbase` A complete web automation framework for end-to-end testing. Dec 01, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-sbase` A complete web automation framework for end-to-end testing. Dec 08, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-scenario` pytest plugin for test scenarios Feb 06, 2017 3 - Alpha N/A
|
||||
:pypi:`pytest-schedule` The job of test scheduling for humans. Jan 07, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-schema` 👍 Validate return values against a schema-like object in testing Mar 14, 2022 5 - Production/Stable pytest (>=3.5.0)
|
||||
|
@ -1082,7 +1083,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-select` A pytest plugin which allows to (de-)select tests from a file. Jan 18, 2019 3 - Alpha pytest (>=3.0)
|
||||
:pypi:`pytest-selenium` pytest plugin for Selenium Nov 20, 2023 5 - Production/Stable pytest>=6.0.0
|
||||
:pypi:`pytest-selenium-auto` pytest plugin to automatically capture screenshots upon selenium webdriver events Nov 07, 2023 N/A pytest >= 7.0.0
|
||||
:pypi:`pytest-seleniumbase` A complete web automation framework for end-to-end testing. Dec 01, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-seleniumbase` A complete web automation framework for end-to-end testing. Dec 08, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-selenium-enhancer` pytest plugin for Selenium Apr 29, 2022 5 - Production/Stable N/A
|
||||
:pypi:`pytest-selenium-pdiff` A pytest package implementing perceptualdiff for Selenium tests. Apr 06, 2017 2 - Pre-Alpha N/A
|
||||
:pypi:`pytest-send-email` Send pytest execution result email Dec 04, 2019 N/A N/A
|
||||
|
@ -1090,7 +1091,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-sequence-markers` Pytest plugin for sequencing markers for execution of tests May 23, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-server-fixtures` Extensible server fixures for py.test May 28, 2019 5 - Production/Stable pytest
|
||||
:pypi:`pytest-serverless` Automatically mocks resources from serverless.yml in pytest using moto. May 09, 2022 4 - Beta N/A
|
||||
:pypi:`pytest-servers` pytest servers Oct 31, 2023 3 - Alpha pytest >=6.2
|
||||
:pypi:`pytest-servers` pytest servers Dec 15, 2023 3 - Alpha pytest >=6.2
|
||||
:pypi:`pytest-services` Services plugin for pytest testing framework Oct 30, 2020 6 - Mature N/A
|
||||
:pypi:`pytest-session2file` pytest-session2file (aka: pytest-session_to_file for v0.1.0 - v0.1.2) is a py.test plugin for capturing and saving to file the stdout of py.test. Jan 26, 2021 3 - Alpha pytest
|
||||
:pypi:`pytest-session-fixture-globalize` py.test plugin to make session fixtures behave as if written in conftest, even if it is written in some modules May 15, 2018 4 - Beta N/A
|
||||
|
@ -1125,6 +1126,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-smtp` Send email with pytest execution result Feb 20, 2021 N/A pytest
|
||||
:pypi:`pytest-smtp4dev` Plugin for smtp4dev API Jun 27, 2023 5 - Production/Stable N/A
|
||||
:pypi:`pytest-smtpd` An SMTP server for testing built on aiosmtpd May 15, 2023 N/A pytest
|
||||
:pypi:`pytest-smtp-test-server` pytest plugin for using \`smtp-test-server\` as a fixture Dec 03, 2023 2 - Pre-Alpha pytest (>=7.4.3,<8.0.0)
|
||||
:pypi:`pytest-snail` Plugin for adding a marker to slow running tests. 🐌 Nov 04, 2019 3 - Alpha pytest (>=5.0.1)
|
||||
:pypi:`pytest-snapci` py.test plugin for Snap-CI Nov 12, 2015 N/A N/A
|
||||
:pypi:`pytest-snapshot` A plugin for snapshot testing with pytest. Apr 23, 2022 4 - Beta pytest (>=3.0.0)
|
||||
|
@ -1154,7 +1156,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-splitio` Split.io SDK integration for e2e tests Sep 22, 2020 N/A pytest (<7,>=5.0)
|
||||
:pypi:`pytest-split-tests` A Pytest plugin for running a subset of your tests by splitting them in to equally sized groups. Forked from Mark Adams' original project pytest-test-groups. Jul 30, 2021 5 - Production/Stable pytest (>=2.5)
|
||||
:pypi:`pytest-split-tests-tresorit` Feb 22, 2021 1 - Planning N/A
|
||||
:pypi:`pytest-splunk-addon` A Dynamic test tool for Splunk Apps and Add-ons Nov 25, 2023 N/A pytest (>5.4.0,<8)
|
||||
:pypi:`pytest-splunk-addon` A Dynamic test tool for Splunk Apps and Add-ons Dec 14, 2023 N/A pytest (>5.4.0,<8)
|
||||
:pypi:`pytest-splunk-addon-ui-smartx` Library to support testing Splunk Add-on UX Dec 01, 2023 N/A N/A
|
||||
:pypi:`pytest-splunk-env` pytest fixtures for interaction with Splunk Enterprise and Splunk Cloud Oct 22, 2020 N/A pytest (>=6.1.1,<7.0.0)
|
||||
:pypi:`pytest-sqitch` sqitch for pytest Apr 06, 2020 4 - Beta N/A
|
||||
|
@ -1203,6 +1205,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-tape` easy assertion with expected results saved to yaml files Mar 17, 2021 4 - Beta N/A
|
||||
:pypi:`pytest-target` Pytest plugin for remote target orchestration. Jan 21, 2021 3 - Alpha pytest (>=6.1.2,<7.0.0)
|
||||
:pypi:`pytest-tblineinfo` tblineinfo is a py.test plugin that insert the node id in the final py.test report when --tb=line option is used Dec 01, 2015 3 - Alpha pytest (>=2.0)
|
||||
:pypi:`pytest-tcp` A Pytest plugin for test prioritization Dec 10, 2023 4 - Beta pytest >=7.4.3
|
||||
:pypi:`pytest-tcpclient` A pytest plugin for testing TCP clients Nov 16, 2022 N/A pytest (<8,>=7.1.3)
|
||||
:pypi:`pytest-tdd` run pytest on a python module Aug 18, 2023 4 - Beta N/A
|
||||
:pypi:`pytest-teamcity-logblock` py.test plugin to introduce block structure in teamcity build log, if output is not captured May 15, 2018 4 - Beta N/A
|
||||
|
@ -1252,6 +1255,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-threadleak` Detects thread leaks Jul 03, 2022 4 - Beta pytest (>=3.1.1)
|
||||
:pypi:`pytest-tick` Ticking on tests Aug 31, 2021 5 - Production/Stable pytest (>=6.2.5,<7.0.0)
|
||||
:pypi:`pytest-time` Jun 24, 2023 3 - Alpha pytest
|
||||
:pypi:`pytest-timeassert-ethan` execution duration Dec 12, 2023 N/A pytest
|
||||
:pypi:`pytest-timeit` A pytest plugin to time test function runs Oct 13, 2016 4 - Beta N/A
|
||||
:pypi:`pytest-timeout` pytest plugin to abort hanging tests Oct 08, 2023 5 - Production/Stable pytest >=5.0.0
|
||||
:pypi:`pytest-timeouts` Linux-only Pytest plugin to control durations of various test case execution phases Sep 21, 2019 5 - Production/Stable N/A
|
||||
|
@ -1264,7 +1268,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-tldr` A pytest plugin that limits the output to just the things you need. Oct 26, 2022 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-tm4j-reporter` Cloud Jira Test Management (TM4J) PyTest reporter plugin Sep 01, 2020 N/A pytest
|
||||
:pypi:`pytest-tmnet` A small example package Mar 01, 2022 N/A N/A
|
||||
:pypi:`pytest-tmp-files` Utilities to create temporary file hierarchies in pytest. Apr 03, 2022 N/A pytest
|
||||
:pypi:`pytest-tmp-files` Utilities to create temporary file hierarchies in pytest. Dec 08, 2023 N/A pytest
|
||||
:pypi:`pytest-tmpfs` A pytest plugin that helps you on using a temporary filesystem for testing. Aug 29, 2022 N/A pytest
|
||||
:pypi:`pytest-tmreport` this is a vue-element ui report for pytest Aug 12, 2022 N/A N/A
|
||||
:pypi:`pytest-tmux` A pytest plugin that enables tmux driven tests Apr 22, 2023 4 - Beta N/A
|
||||
|
@ -1289,7 +1293,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-tspwplib` A simple plugin to use with tspwplib Jan 08, 2021 4 - Beta pytest (>=3.5.0)
|
||||
:pypi:`pytest-tst` Customize pytest options, output and exit code to make it compatible with tst Apr 27, 2022 N/A pytest (>=5.0.0)
|
||||
:pypi:`pytest-tstcls` Test Class Base Mar 23, 2020 5 - Production/Stable N/A
|
||||
:pypi:`pytest-tui` Text User Interface (TUI) and HTML report for Pytest test runs Jun 12, 2023 4 - Beta N/A
|
||||
:pypi:`pytest-tui` Text User Interface (TUI) and HTML report for Pytest test runs Dec 08, 2023 4 - Beta N/A
|
||||
:pypi:`pytest-tutorials` Mar 11, 2023 N/A N/A
|
||||
:pypi:`pytest-twilio-conversations-client-mock` Aug 02, 2022 N/A N/A
|
||||
:pypi:`pytest-twisted` A twisted plugin for pytest. Oct 16, 2022 5 - Production/Stable pytest (>=2.3)
|
||||
|
@ -1321,7 +1325,7 @@ This list contains 1351 plugins.
|
|||
:pypi:`pytest-vcrpandas` Test from HTTP interactions to dataframe processed. Jan 12, 2019 4 - Beta pytest
|
||||
:pypi:`pytest-vcs` Sep 22, 2022 4 - Beta N/A
|
||||
:pypi:`pytest-venv` py.test fixture for creating a virtual environment Nov 23, 2023 4 - Beta pytest
|
||||
:pypi:`pytest-ver` Pytest module with Verification Protocol, Verification Report and Trace Matrix Nov 23, 2023 4 - Beta pytest
|
||||
:pypi:`pytest-ver` Pytest module with Verification Protocol, Verification Report and Trace Matrix Dec 12, 2023 4 - Beta pytest
|
||||
:pypi:`pytest-verbose-parametrize` More descriptive output for parametrized py.test tests May 28, 2019 5 - Production/Stable pytest
|
||||
:pypi:`pytest-vimqf` A simple pytest plugin that will shrink pytest output when specified, to fit vim quickfix window. Feb 08, 2021 4 - Beta pytest (>=6.2.2,<7.0.0)
|
||||
:pypi:`pytest-virtualenv` Virtualenv fixture for py.test May 28, 2019 5 - Production/Stable pytest
|
||||
|
@ -1622,7 +1626,7 @@ This list contains 1351 plugins.
|
|||
Static code checks used at Alphamoon
|
||||
|
||||
:pypi:`pytest-analyzer`
|
||||
*last release*: Nov 08, 2023,
|
||||
*last release*: Dec 06, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: pytest >=7.3.1
|
||||
|
||||
|
@ -1755,7 +1759,7 @@ This list contains 1351 plugins.
|
|||
A plugin to use approvaltests with pytest
|
||||
|
||||
:pypi:`pytest-approvaltests-geo`
|
||||
*last release*: Sep 06, 2023,
|
||||
*last release*: Dec 12, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: pytest
|
||||
|
||||
|
@ -1888,9 +1892,9 @@ This list contains 1351 plugins.
|
|||
Pytest fixtures for async generators
|
||||
|
||||
:pypi:`pytest-asyncio`
|
||||
*last release*: Nov 27, 2023,
|
||||
*last release*: Dec 09, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: pytest (>=7.0.0)
|
||||
*requires*: pytest >=7.0.0
|
||||
|
||||
Pytest support for asyncio
|
||||
|
||||
|
@ -2077,7 +2081,7 @@ This list contains 1351 plugins.
|
|||
pytest plugin for URL based testing
|
||||
|
||||
:pypi:`pytest-bdd`
|
||||
*last release*: Oct 10, 2023,
|
||||
*last release*: Dec 02, 2023,
|
||||
*status*: 6 - Mature,
|
||||
*requires*: pytest (>=6.2.0)
|
||||
|
||||
|
@ -2483,7 +2487,7 @@ This list contains 1351 plugins.
|
|||
Pytest plugin with server for catching HTTP requests.
|
||||
|
||||
:pypi:`pytest-celery`
|
||||
*last release*: May 06, 2021,
|
||||
*last release*: Dec 07, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -2553,9 +2557,9 @@ This list contains 1351 plugins.
|
|||
check the README when running tests
|
||||
|
||||
:pypi:`pytest-checkipdb`
|
||||
*last release*: Jul 22, 2020,
|
||||
*last release*: Dec 04, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: pytest (>=2.9.2)
|
||||
*requires*: pytest >=2.9.2
|
||||
|
||||
plugin to check if there are ipdb debugs left
|
||||
|
||||
|
@ -2917,9 +2921,9 @@ This list contains 1351 plugins.
|
|||
The pytest plugin for your copier templates 📒
|
||||
|
||||
:pypi:`pytest-copier`
|
||||
*last release*: Jun 23, 2023,
|
||||
*last release*: Dec 11, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: pytest>=7.1.2
|
||||
*requires*: pytest>=7.3.2
|
||||
|
||||
A pytest plugin to help testing Copier templates
|
||||
|
||||
|
@ -3449,9 +3453,9 @@ This list contains 1351 plugins.
|
|||
PyTest plugin for generating Difido reports
|
||||
|
||||
:pypi:`pytest-dir-equal`
|
||||
*last release*: Jun 23, 2023,
|
||||
*last release*: Dec 11, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: pytest>=7.1.2
|
||||
*requires*: pytest>=7.3.2
|
||||
|
||||
pytest-dir-equals is a pytest plugin providing helpers to assert directories equality allowing golden testing
|
||||
|
||||
|
@ -3792,8 +3796,8 @@ This list contains 1351 plugins.
|
|||
A simple pytest plugin to import names and add them to the doctest namespace.
|
||||
|
||||
:pypi:`pytest-doctestplus`
|
||||
*last release*: Aug 11, 2023,
|
||||
*status*: 3 - Alpha,
|
||||
*last release*: Dec 13, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: pytest >=4.6
|
||||
|
||||
Pytest plugin with advanced doctest features.
|
||||
|
@ -3806,7 +3810,7 @@ This list contains 1351 plugins.
|
|||
pytest plugin for dogu report
|
||||
|
||||
:pypi:`pytest-dogu-sdk`
|
||||
*last release*: Nov 20, 2023,
|
||||
*last release*: Dec 14, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -3974,9 +3978,9 @@ This list contains 1351 plugins.
|
|||
Pytest execution on EC2 instance
|
||||
|
||||
:pypi:`pytest-echo`
|
||||
*last release*: Jan 08, 2020,
|
||||
*last release*: Dec 05, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
*requires*: pytest >=2.2
|
||||
|
||||
pytest plugin with mechanisms for echoing environment variables, package version and generic attributes
|
||||
|
||||
|
@ -4023,56 +4027,56 @@ This list contains 1351 plugins.
|
|||
Send execution result email
|
||||
|
||||
:pypi:`pytest-embedded`
|
||||
*last release*: Nov 27, 2023,
|
||||
*last release*: Dec 04, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: pytest>=7.0
|
||||
|
||||
A pytest plugin that designed for embedded testing.
|
||||
|
||||
:pypi:`pytest-embedded-arduino`
|
||||
*last release*: Nov 27, 2023,
|
||||
*last release*: Dec 04, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
Make pytest-embedded plugin work with Arduino.
|
||||
|
||||
:pypi:`pytest-embedded-idf`
|
||||
*last release*: Nov 27, 2023,
|
||||
*last release*: Dec 04, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
Make pytest-embedded plugin work with ESP-IDF.
|
||||
|
||||
:pypi:`pytest-embedded-jtag`
|
||||
*last release*: Nov 27, 2023,
|
||||
*last release*: Dec 04, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
Make pytest-embedded plugin work with JTAG.
|
||||
|
||||
:pypi:`pytest-embedded-qemu`
|
||||
*last release*: Nov 27, 2023,
|
||||
*last release*: Dec 04, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
Make pytest-embedded plugin work with QEMU.
|
||||
|
||||
:pypi:`pytest-embedded-serial`
|
||||
*last release*: Nov 27, 2023,
|
||||
*last release*: Dec 04, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
Make pytest-embedded plugin work with Serial.
|
||||
|
||||
:pypi:`pytest-embedded-serial-esp`
|
||||
*last release*: Nov 27, 2023,
|
||||
*last release*: Dec 04, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
Make pytest-embedded plugin work with Espressif target boards.
|
||||
|
||||
:pypi:`pytest-embedded-wokwi`
|
||||
*last release*: Nov 27, 2023,
|
||||
*last release*: Dec 04, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -4842,7 +4846,7 @@ This list contains 1351 plugins.
|
|||
|
||||
|
||||
:pypi:`pytest-fzf`
|
||||
*last release*: Nov 28, 2023,
|
||||
*last release*: Dec 15, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: pytest >=6.0.0
|
||||
|
||||
|
@ -4870,9 +4874,9 @@ This list contains 1351 plugins.
|
|||
Uses gcov to measure test coverage of a C library
|
||||
|
||||
:pypi:`pytest-gee`
|
||||
*last release*: Nov 22, 2023,
|
||||
*last release*: Dec 04, 2023,
|
||||
*status*: 3 - Alpha,
|
||||
*requires*: pytest; extra == 'test'
|
||||
*requires*: pytest
|
||||
|
||||
The Python plugin for your GEE based packages.
|
||||
|
||||
|
@ -4905,7 +4909,7 @@ This list contains 1351 plugins.
|
|||
For finding/executing Ghost Inspector tests
|
||||
|
||||
:pypi:`pytest-girder`
|
||||
*last release*: Nov 20, 2023,
|
||||
*last release*: Dec 14, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -5171,7 +5175,7 @@ This list contains 1351 plugins.
|
|||
A pytest plugin for use with homeassistant custom components.
|
||||
|
||||
:pypi:`pytest-homeassistant-custom-component`
|
||||
*last release*: Dec 01, 2023,
|
||||
*last release*: Dec 15, 2023,
|
||||
*status*: 3 - Alpha,
|
||||
*requires*: pytest ==7.4.3
|
||||
|
||||
|
@ -5192,7 +5196,7 @@ This list contains 1351 plugins.
|
|||
Report on tests that honor constraints, and guard against regressions
|
||||
|
||||
:pypi:`pytest-hot-reloading`
|
||||
*last release*: Dec 01, 2023,
|
||||
*last release*: Dec 13, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -5311,7 +5315,7 @@ This list contains 1351 plugins.
|
|||
Easily test your HTTP library against a local copy of httpbin
|
||||
|
||||
:pypi:`pytest-httpdbg`
|
||||
*last release*: Nov 03, 2023,
|
||||
*last release*: Dec 09, 2023,
|
||||
*status*: 3 - Alpha,
|
||||
*requires*: pytest >=7.0.0
|
||||
|
||||
|
@ -5381,7 +5385,7 @@ This list contains 1351 plugins.
|
|||
help hypo module for pytest
|
||||
|
||||
:pypi:`pytest-iam`
|
||||
*last release*: Aug 31, 2023,
|
||||
*last release*: Dec 15, 2023,
|
||||
*status*: 3 - Alpha,
|
||||
*requires*: pytest (>=7.0.0,<8.0.0)
|
||||
|
||||
|
@ -5395,7 +5399,7 @@ This list contains 1351 plugins.
|
|||
A plugin to sent pytest results to an Ibutsu server
|
||||
|
||||
:pypi:`pytest-icdiff`
|
||||
*last release*: Sep 20, 2023,
|
||||
*last release*: Dec 05, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: pytest
|
||||
|
||||
|
@ -5409,7 +5413,7 @@ This list contains 1351 plugins.
|
|||
A pytest plugin for idapython. Allows a pytest setup to run tests outside and inside IDA in an automated manner by runnig pytest inside IDA and by mocking idapython api
|
||||
|
||||
:pypi:`pytest-idem`
|
||||
*last release*: Jun 23, 2023,
|
||||
*last release*: Dec 13, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -5507,14 +5511,14 @@ This list contains 1351 plugins.
|
|||
A pytest plugin for writing inline tests.
|
||||
|
||||
:pypi:`pytest-inmanta`
|
||||
*last release*: Nov 29, 2023,
|
||||
*last release*: Dec 13, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
*requires*: pytest
|
||||
|
||||
A py.test plugin providing fixtures to simplify inmanta modules testing.
|
||||
|
||||
:pypi:`pytest-inmanta-extensions`
|
||||
*last release*: Oct 13, 2023,
|
||||
*last release*: Dec 11, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -5591,7 +5595,7 @@ This list contains 1351 plugins.
|
|||
Pytest plugin for intercepting outgoing connection requests during pytest run.
|
||||
|
||||
:pypi:`pytest-interface-tester`
|
||||
*last release*: Nov 29, 2023,
|
||||
*last release*: Dec 05, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: pytest
|
||||
|
||||
|
@ -5780,7 +5784,7 @@ This list contains 1351 plugins.
|
|||
pytest plugin supporting json test report output
|
||||
|
||||
:pypi:`pytest-jupyter`
|
||||
*last release*: Mar 30, 2023,
|
||||
*last release*: Dec 05, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: pytest
|
||||
|
||||
|
@ -5983,7 +5987,7 @@ This list contains 1351 plugins.
|
|||
A python-libfaketime plugin for pytest.
|
||||
|
||||
:pypi:`pytest-libiio`
|
||||
*last release*: Jul 11, 2022,
|
||||
*last release*: Dec 06, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -6319,7 +6323,7 @@ This list contains 1351 plugins.
|
|||
A pytest plugin to make a test results report with Markdown table format.
|
||||
|
||||
:pypi:`pytest-meilisearch`
|
||||
*last release*: Nov 06, 2023,
|
||||
*last release*: Dec 07, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: pytest (>=7.4.3)
|
||||
|
||||
|
@ -6396,7 +6400,7 @@ This list contains 1351 plugins.
|
|||
Custom metrics report for pytest
|
||||
|
||||
:pypi:`pytest-mh`
|
||||
*last release*: Nov 21, 2023,
|
||||
*last release*: Dec 07, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: pytest
|
||||
|
||||
|
@ -6423,6 +6427,13 @@ This list contains 1351 plugins.
|
|||
|
||||
A plugin to test mp
|
||||
|
||||
:pypi:`pytest-minio-mock`
|
||||
*last release*: Dec 06, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: pytest >=5.0.0
|
||||
|
||||
A pytest plugin for mocking Minio S3 interactions
|
||||
|
||||
:pypi:`pytest-missing-fixtures`
|
||||
*last release*: Oct 14, 2020,
|
||||
*status*: 4 - Beta,
|
||||
|
@ -6976,6 +6987,13 @@ This list contains 1351 plugins.
|
|||
|
||||
Use @pytest.mark.only to run a single test
|
||||
|
||||
:pypi:`pytest-oof`
|
||||
*last release*: Dec 11, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: N/A
|
||||
|
||||
A Pytest plugin providing structured, programmatic access to a test run's results
|
||||
|
||||
:pypi:`pytest-oot`
|
||||
*last release*: Sep 18, 2016,
|
||||
*status*: 4 - Beta,
|
||||
|
@ -7747,7 +7765,7 @@ This list contains 1351 plugins.
|
|||
Record PyMySQL queries and mock with the stored data.
|
||||
|
||||
:pypi:`pytest-pyodide`
|
||||
*last release*: Nov 18, 2023,
|
||||
*last release*: Dec 09, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: pytest
|
||||
|
||||
|
@ -8034,7 +8052,7 @@ This list contains 1351 plugins.
|
|||
Pytest plugin, meant to facilitate unit tests writing for tools consumming Web APIs.
|
||||
|
||||
:pypi:`pytest-recording`
|
||||
*last release*: Jul 31, 2023,
|
||||
*last release*: Dec 06, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: pytest>=3.5.0
|
||||
|
||||
|
@ -8244,7 +8262,7 @@ This list contains 1351 plugins.
|
|||
pytest plugin for adding tests' parameters to junit report
|
||||
|
||||
:pypi:`pytest-reportportal`
|
||||
*last release*: Oct 17, 2023,
|
||||
*last release*: Dec 06, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: pytest >=3.8.0
|
||||
|
||||
|
@ -8335,7 +8353,7 @@ This list contains 1351 plugins.
|
|||
Pytest fixture for recording and replaying serial port traffic.
|
||||
|
||||
:pypi:`pytest-resilient-circuits`
|
||||
*last release*: Nov 22, 2023,
|
||||
*last release*: Dec 11, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: pytest ~=4.6 ; python_version == "2.7"
|
||||
|
||||
|
@ -8565,13 +8583,6 @@ This list contains 1351 plugins.
|
|||
|
||||
implement a --failed option for pytest
|
||||
|
||||
:pypi:`pytest-runner`
|
||||
*last release*: Feb 25, 2022,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: pytest (>=6) ; extra == 'testing'
|
||||
|
||||
Invoke py.test as distutils command with dependency resolution
|
||||
|
||||
:pypi:`pytest-run-subprocess`
|
||||
*last release*: Nov 12, 2022,
|
||||
*status*: 5 - Production/Stable,
|
||||
|
@ -8664,7 +8675,7 @@ This list contains 1351 plugins.
|
|||
|
||||
|
||||
:pypi:`pytest-sbase`
|
||||
*last release*: Dec 01, 2023,
|
||||
*last release*: Dec 08, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -8727,7 +8738,7 @@ This list contains 1351 plugins.
|
|||
pytest plugin to automatically capture screenshots upon selenium webdriver events
|
||||
|
||||
:pypi:`pytest-seleniumbase`
|
||||
*last release*: Dec 01, 2023,
|
||||
*last release*: Dec 08, 2023,
|
||||
*status*: 5 - Production/Stable,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -8783,7 +8794,7 @@ This list contains 1351 plugins.
|
|||
Automatically mocks resources from serverless.yml in pytest using moto.
|
||||
|
||||
:pypi:`pytest-servers`
|
||||
*last release*: Oct 31, 2023,
|
||||
*last release*: Dec 15, 2023,
|
||||
*status*: 3 - Alpha,
|
||||
*requires*: pytest >=6.2
|
||||
|
||||
|
@ -9027,6 +9038,13 @@ This list contains 1351 plugins.
|
|||
|
||||
An SMTP server for testing built on aiosmtpd
|
||||
|
||||
:pypi:`pytest-smtp-test-server`
|
||||
*last release*: Dec 03, 2023,
|
||||
*status*: 2 - Pre-Alpha,
|
||||
*requires*: pytest (>=7.4.3,<8.0.0)
|
||||
|
||||
pytest plugin for using \`smtp-test-server\` as a fixture
|
||||
|
||||
:pypi:`pytest-snail`
|
||||
*last release*: Nov 04, 2019,
|
||||
*status*: 3 - Alpha,
|
||||
|
@ -9231,7 +9249,7 @@ This list contains 1351 plugins.
|
|||
|
||||
|
||||
:pypi:`pytest-splunk-addon`
|
||||
*last release*: Nov 25, 2023,
|
||||
*last release*: Dec 14, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: pytest (>5.4.0,<8)
|
||||
|
||||
|
@ -9573,6 +9591,13 @@ This list contains 1351 plugins.
|
|||
|
||||
tblineinfo is a py.test plugin that insert the node id in the final py.test report when --tb=line option is used
|
||||
|
||||
:pypi:`pytest-tcp`
|
||||
*last release*: Dec 10, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: pytest >=7.4.3
|
||||
|
||||
A Pytest plugin for test prioritization
|
||||
|
||||
:pypi:`pytest-tcpclient`
|
||||
*last release*: Nov 16, 2022,
|
||||
*status*: N/A,
|
||||
|
@ -9916,6 +9941,13 @@ This list contains 1351 plugins.
|
|||
|
||||
|
||||
|
||||
:pypi:`pytest-timeassert-ethan`
|
||||
*last release*: Dec 12, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: pytest
|
||||
|
||||
execution duration
|
||||
|
||||
:pypi:`pytest-timeit`
|
||||
*last release*: Oct 13, 2016,
|
||||
*status*: 4 - Beta,
|
||||
|
@ -10001,7 +10033,7 @@ This list contains 1351 plugins.
|
|||
A small example package
|
||||
|
||||
:pypi:`pytest-tmp-files`
|
||||
*last release*: Apr 03, 2022,
|
||||
*last release*: Dec 08, 2023,
|
||||
*status*: N/A,
|
||||
*requires*: pytest
|
||||
|
||||
|
@ -10176,7 +10208,7 @@ This list contains 1351 plugins.
|
|||
Test Class Base
|
||||
|
||||
:pypi:`pytest-tui`
|
||||
*last release*: Jun 12, 2023,
|
||||
*last release*: Dec 08, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: N/A
|
||||
|
||||
|
@ -10400,7 +10432,7 @@ This list contains 1351 plugins.
|
|||
py.test fixture for creating a virtual environment
|
||||
|
||||
:pypi:`pytest-ver`
|
||||
*last release*: Nov 23, 2023,
|
||||
*last release*: Dec 12, 2023,
|
||||
*status*: 4 - Beta,
|
||||
*requires*: pytest
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ pytest.xfail
|
|||
pytest.exit
|
||||
~~~~~~~~~~~
|
||||
|
||||
.. autofunction:: pytest.exit(reason, [returncode=False, msg=None])
|
||||
.. autofunction:: pytest.exit(reason, [returncode=None, msg=None])
|
||||
|
||||
pytest.main
|
||||
~~~~~~~~~~~
|
||||
|
@ -612,10 +612,30 @@ Hooks
|
|||
|
||||
**Tutorial**: :ref:`writing-plugins`
|
||||
|
||||
.. currentmodule:: _pytest.hookspec
|
||||
|
||||
Reference to all hooks which can be implemented by :ref:`conftest.py files <localplugin>` and :ref:`plugins <plugins>`.
|
||||
|
||||
@pytest.hookimpl
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. function:: pytest.hookimpl
|
||||
:decorator:
|
||||
|
||||
pytest's decorator for marking functions as hook implementations.
|
||||
|
||||
See :ref:`writinghooks` and :func:`pluggy.HookimplMarker`.
|
||||
|
||||
@pytest.hookspec
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. function:: pytest.hookspec
|
||||
:decorator:
|
||||
|
||||
pytest's decorator for marking functions as hook specifications.
|
||||
|
||||
See :ref:`declaringhooks` and :func:`pluggy.HookspecMarker`.
|
||||
|
||||
.. currentmodule:: _pytest.hookspec
|
||||
|
||||
Bootstrapping hooks
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
@ -801,6 +821,7 @@ Node
|
|||
|
||||
.. autoclass:: _pytest.nodes.Node()
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Collector
|
||||
~~~~~~~~~
|
||||
|
@ -1137,7 +1158,10 @@ When set (regardless of value), pytest will use color in terminal output.
|
|||
Exceptions
|
||||
----------
|
||||
|
||||
.. autoclass:: pytest.UsageError()
|
||||
.. autoexception:: pytest.UsageError()
|
||||
:show-inheritance:
|
||||
|
||||
.. autoexception:: pytest.FixtureLookupError()
|
||||
:show-inheritance:
|
||||
|
||||
.. _`warnings ref`:
|
||||
|
|
|
@ -64,9 +64,6 @@ class PrettyPrinter:
|
|||
indent: int = 4,
|
||||
width: int = 80,
|
||||
depth: Optional[int] = None,
|
||||
*,
|
||||
sort_dicts: bool = True,
|
||||
underscore_numbers: bool = False,
|
||||
) -> None:
|
||||
"""Handle pretty printing operations onto a stream using a set of
|
||||
configured parameters.
|
||||
|
@ -80,12 +77,7 @@ class PrettyPrinter:
|
|||
depth
|
||||
The maximum depth to print out nested structures.
|
||||
|
||||
sort_dicts
|
||||
If true, dict keys are sorted.
|
||||
|
||||
"""
|
||||
indent = int(indent)
|
||||
width = int(width)
|
||||
if indent < 0:
|
||||
raise ValueError("indent must be >= 0")
|
||||
if depth is not None and depth <= 0:
|
||||
|
@ -95,8 +87,6 @@ class PrettyPrinter:
|
|||
self._depth = depth
|
||||
self._indent_per_level = indent
|
||||
self._width = width
|
||||
self._sort_dicts = sort_dicts
|
||||
self._underscore_numbers = underscore_numbers
|
||||
|
||||
def pformat(self, object: Any) -> str:
|
||||
sio = _StringIO()
|
||||
|
@ -174,10 +164,7 @@ class PrettyPrinter:
|
|||
) -> None:
|
||||
write = stream.write
|
||||
write("{")
|
||||
if self._sort_dicts:
|
||||
items = sorted(object.items(), key=_safe_tuple)
|
||||
else:
|
||||
items = object.items()
|
||||
items = sorted(object.items(), key=_safe_tuple)
|
||||
self._format_dict_items(items, stream, indent, allowance, context, level)
|
||||
write("}")
|
||||
|
||||
|
@ -486,12 +473,7 @@ class PrettyPrinter:
|
|||
write("\n" + " " * indent)
|
||||
|
||||
def _repr(self, object: Any, context: Set[int], level: int) -> str:
|
||||
return self.format(object, context.copy(), self._depth, level)
|
||||
|
||||
def format(
|
||||
self, object: Any, context: Set[int], maxlevels: Optional[int], level: int
|
||||
) -> str:
|
||||
return self._safe_repr(object, context, maxlevels, level)
|
||||
return self._safe_repr(object, context.copy(), self._depth, level)
|
||||
|
||||
def _pprint_default_dict(
|
||||
self,
|
||||
|
@ -616,12 +598,6 @@ class PrettyPrinter:
|
|||
|
||||
r = getattr(typ, "__repr__", None)
|
||||
|
||||
if issubclass(typ, int) and r is int.__repr__:
|
||||
if self._underscore_numbers:
|
||||
return f"{object:_d}"
|
||||
else:
|
||||
return repr(object)
|
||||
|
||||
if issubclass(typ, dict) and r is dict.__repr__:
|
||||
if not object:
|
||||
return "{}"
|
||||
|
@ -634,13 +610,9 @@ class PrettyPrinter:
|
|||
components: List[str] = []
|
||||
append = components.append
|
||||
level += 1
|
||||
if self._sort_dicts:
|
||||
items = sorted(object.items(), key=_safe_tuple)
|
||||
else:
|
||||
items = object.items()
|
||||
for k, v in items:
|
||||
krepr = self.format(k, context, maxlevels, level)
|
||||
vrepr = self.format(v, context, maxlevels, level)
|
||||
for k, v in sorted(object.items(), key=_safe_tuple):
|
||||
krepr = self._safe_repr(k, context, maxlevels, level)
|
||||
vrepr = self._safe_repr(v, context, maxlevels, level)
|
||||
append(f"{krepr}: {vrepr}")
|
||||
context.remove(objid)
|
||||
return "{%s}" % ", ".join(components)
|
||||
|
@ -668,7 +640,7 @@ class PrettyPrinter:
|
|||
append = components.append
|
||||
level += 1
|
||||
for o in object:
|
||||
orepr = self.format(o, context, maxlevels, level)
|
||||
orepr = self._safe_repr(o, context, maxlevels, level)
|
||||
append(orepr)
|
||||
context.remove(objid)
|
||||
return format % ", ".join(components)
|
||||
|
@ -676,7 +648,9 @@ class PrettyPrinter:
|
|||
return repr(object)
|
||||
|
||||
|
||||
_builtin_scalars = frozenset({str, bytes, bytearray, float, complex, bool, type(None)})
|
||||
_builtin_scalars = frozenset(
|
||||
{str, bytes, bytearray, float, complex, bool, type(None), int}
|
||||
)
|
||||
|
||||
|
||||
def _recursion(object: Any) -> str:
|
||||
|
|
|
@ -588,7 +588,7 @@ if sys.version_info >= (3, 11) or TYPE_CHECKING:
|
|||
|
||||
@final
|
||||
class CaptureResult(NamedTuple, Generic[AnyStr]):
|
||||
"""The result of :method:`CaptureFixture.readouterr`."""
|
||||
"""The result of :method:`caplog.readouterr() <pytest.CaptureFixture.readouterr>`."""
|
||||
|
||||
out: AnyStr
|
||||
err: AnyStr
|
||||
|
@ -598,7 +598,7 @@ else:
|
|||
class CaptureResult(
|
||||
collections.namedtuple("CaptureResult", ["out", "err"]), Generic[AnyStr]
|
||||
):
|
||||
"""The result of :method:`CaptureFixture.readouterr`."""
|
||||
"""The result of :method:`caplog.readouterr() <pytest.CaptureFixture.readouterr>`."""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
|
|
|
@ -449,6 +449,7 @@ class PytestPluginManager(PluginManager):
|
|||
def parse_hookimpl_opts(
|
||||
self, plugin: _PluggyPlugin, name: str
|
||||
) -> Optional[HookimplOpts]:
|
||||
""":meta private:"""
|
||||
# pytest hooks are always prefixed with "pytest_",
|
||||
# so we avoid accessing possibly non-readable attributes
|
||||
# (see issue #1073).
|
||||
|
@ -472,6 +473,7 @@ class PytestPluginManager(PluginManager):
|
|||
)
|
||||
|
||||
def parse_hookspec_opts(self, module_or_class, name: str) -> Optional[HookspecOpts]:
|
||||
""":meta private:"""
|
||||
opts = super().parse_hookspec_opts(module_or_class, name)
|
||||
if opts is None:
|
||||
method = getattr(module_or_class, name)
|
||||
|
|
|
@ -98,7 +98,7 @@ class Parser:
|
|||
:param opts:
|
||||
Option names, can be short or long options.
|
||||
:param attrs:
|
||||
Same attributes as the argparse library's :py:func:`add_argument()
|
||||
Same attributes as the argparse library's :meth:`add_argument()
|
||||
<argparse.ArgumentParser.add_argument>` function accepts.
|
||||
|
||||
After command line parsing, options are available on the pytest config
|
||||
|
@ -400,7 +400,7 @@ class OptionGroup:
|
|||
:param opts:
|
||||
Option names, can be short or long options.
|
||||
:param attrs:
|
||||
Same attributes as the argparse library's :py:func:`add_argument()
|
||||
Same attributes as the argparse library's :meth:`add_argument()
|
||||
<argparse.ArgumentParser.add_argument>` function accepts.
|
||||
"""
|
||||
conflict = set(opts).intersection(
|
||||
|
|
|
@ -135,7 +135,9 @@ def get_scope_node(
|
|||
import _pytest.python
|
||||
|
||||
if scope is Scope.Function:
|
||||
return node.getparent(nodes.Item)
|
||||
# Type ignored because this is actually safe, see:
|
||||
# https://github.com/python/mypy/issues/4717
|
||||
return node.getparent(nodes.Item) # type: ignore[type-abstract]
|
||||
elif scope is Scope.Class:
|
||||
return node.getparent(_pytest.python.Class)
|
||||
elif scope is Scope.Module:
|
||||
|
|
|
@ -55,7 +55,7 @@ hookspec = HookspecMarker("pytest")
|
|||
@hookspec(historic=True)
|
||||
def pytest_addhooks(pluginmanager: "PytestPluginManager") -> None:
|
||||
"""Called at plugin registration time to allow adding new hooks via a call to
|
||||
``pluginmanager.add_hookspecs(module_or_class, prefix)``.
|
||||
:func:`pluginmanager.add_hookspecs(module_or_class, prefix) <pytest.PytestPluginManager.add_hookspecs>`.
|
||||
|
||||
:param pytest.PytestPluginManager pluginmanager: The pytest plugin manager.
|
||||
|
||||
|
@ -96,8 +96,8 @@ def pytest_addoption(parser: "Parser", pluginmanager: "PytestPluginManager") ->
|
|||
<pytest.Parser.addini>`.
|
||||
|
||||
:param pytest.PytestPluginManager pluginmanager:
|
||||
The pytest plugin manager, which can be used to install :py:func:`hookspec`'s
|
||||
or :py:func:`hookimpl`'s and allow one plugin to call another plugin's hooks
|
||||
The pytest plugin manager, which can be used to install :py:func:`~pytest.hookspec`'s
|
||||
or :py:func:`~pytest.hookimpl`'s and allow one plugin to call another plugin's hooks
|
||||
to change how command line options are added.
|
||||
|
||||
Options can later be accessed through the
|
||||
|
@ -858,8 +858,8 @@ def pytest_warning_recorded(
|
|||
"""Process a warning captured by the internal pytest warnings plugin.
|
||||
|
||||
:param warning_message:
|
||||
The captured warning. This is the same object produced by :py:func:`warnings.catch_warnings`, and contains
|
||||
the same attributes as the parameters of :py:func:`warnings.showwarning`.
|
||||
The captured warning. This is the same object produced by :class:`warnings.catch_warnings`,
|
||||
and contains the same attributes as the parameters of :py:func:`warnings.showwarning`.
|
||||
|
||||
:param when:
|
||||
Indicates when the warning was captured. Possible values:
|
||||
|
@ -940,10 +940,10 @@ def pytest_exception_interact(
|
|||
interactively handled.
|
||||
|
||||
May be called during collection (see :hook:`pytest_make_collect_report`),
|
||||
in which case ``report`` is a :class:`CollectReport`.
|
||||
in which case ``report`` is a :class:`~pytest.CollectReport`.
|
||||
|
||||
May be called during runtest of an item (see :hook:`pytest_runtest_protocol`),
|
||||
in which case ``report`` is a :class:`TestReport`.
|
||||
in which case ``report`` is a :class:`~pytest.TestReport`.
|
||||
|
||||
This hook is not called if the exception that was raised is an internal
|
||||
exception like ``skip.Exception``.
|
||||
|
|
|
@ -88,7 +88,6 @@ class Testdir:
|
|||
return self._pytester.chdir()
|
||||
|
||||
def finalize(self) -> None:
|
||||
"""See :meth:`Pytester._finalize`."""
|
||||
return self._pytester._finalize()
|
||||
|
||||
def makefile(self, ext, *args, **kwargs) -> LEGACY_PATH:
|
||||
|
@ -269,7 +268,7 @@ class LegacyTestdirPlugin:
|
|||
@final
|
||||
@dataclasses.dataclass
|
||||
class TempdirFactory:
|
||||
"""Backward compatibility wrapper that implements :class:`py.path.local`
|
||||
"""Backward compatibility wrapper that implements ``py.path.local``
|
||||
for :class:`TempPathFactory`.
|
||||
|
||||
.. note::
|
||||
|
@ -288,11 +287,11 @@ class TempdirFactory:
|
|||
self._tmppath_factory = tmppath_factory
|
||||
|
||||
def mktemp(self, basename: str, numbered: bool = True) -> LEGACY_PATH:
|
||||
"""Same as :meth:`TempPathFactory.mktemp`, but returns a :class:`py.path.local` object."""
|
||||
"""Same as :meth:`TempPathFactory.mktemp`, but returns a ``py.path.local`` object."""
|
||||
return legacy_path(self._tmppath_factory.mktemp(basename, numbered).resolve())
|
||||
|
||||
def getbasetemp(self) -> LEGACY_PATH:
|
||||
"""Same as :meth:`TempPathFactory.getbasetemp`, but returns a :class:`py.path.local` object."""
|
||||
"""Same as :meth:`TempPathFactory.getbasetemp`, but returns a ``py.path.local`` object."""
|
||||
return legacy_path(self._tmppath_factory.getbasetemp().resolve())
|
||||
|
||||
|
||||
|
|
|
@ -522,7 +522,7 @@ class LogCaptureFixture:
|
|||
The levels of the loggers changed by this function will be
|
||||
restored to their initial values at the end of the test.
|
||||
|
||||
Will enable the requested logging level if it was disabled via :meth:`logging.disable`.
|
||||
Will enable the requested logging level if it was disabled via :func:`logging.disable`.
|
||||
|
||||
:param level: The level.
|
||||
:param logger: The logger to update. If not given, the root logger.
|
||||
|
@ -546,7 +546,7 @@ class LogCaptureFixture:
|
|||
the end of the 'with' statement the level is restored to its original
|
||||
value.
|
||||
|
||||
Will enable the requested logging level if it was disabled via :meth:`logging.disable`.
|
||||
Will enable the requested logging level if it was disabled via :func:`logging.disable`.
|
||||
|
||||
:param level: The level.
|
||||
:param logger: The logger to update. If not given, the root logger.
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
import abc
|
||||
import os
|
||||
import pathlib
|
||||
import warnings
|
||||
from functools import cached_property
|
||||
from inspect import signature
|
||||
|
@ -121,7 +123,7 @@ def _imply_path(
|
|||
_NodeType = TypeVar("_NodeType", bound="Node")
|
||||
|
||||
|
||||
class NodeMeta(type):
|
||||
class NodeMeta(abc.ABCMeta):
|
||||
"""Metaclass used by :class:`Node` to enforce that direct construction raises
|
||||
:class:`Failed`.
|
||||
|
||||
|
@ -165,7 +167,7 @@ class NodeMeta(type):
|
|||
return super().__call__(*k, **known_kw)
|
||||
|
||||
|
||||
class Node(metaclass=NodeMeta):
|
||||
class Node(abc.ABC, metaclass=NodeMeta):
|
||||
r"""Base class of :class:`Collector` and :class:`Item`, the components of
|
||||
the test collection tree.
|
||||
|
||||
|
@ -176,8 +178,8 @@ class Node(metaclass=NodeMeta):
|
|||
# Implemented in the legacypath plugin.
|
||||
#: A ``LEGACY_PATH`` copy of the :attr:`path` attribute. Intended for usage
|
||||
#: for methods not migrated to ``pathlib.Path`` yet, such as
|
||||
#: :meth:`Item.reportinfo`. Will be deprecated in a future release, prefer
|
||||
#: using :attr:`path` instead.
|
||||
#: :meth:`Item.reportinfo <pytest.Item.reportinfo>`. Will be deprecated in
|
||||
#: a future release, prefer using :attr:`path` instead.
|
||||
fspath: LEGACY_PATH
|
||||
|
||||
# Use __slots__ to make attribute access faster.
|
||||
|
@ -228,7 +230,7 @@ class Node(metaclass=NodeMeta):
|
|||
if path is None and fspath is None:
|
||||
path = getattr(parent, "path", None)
|
||||
#: Filesystem path where this node was collected from (can be None).
|
||||
self.path: Path = _imply_path(type(self), path, fspath=fspath)
|
||||
self.path: pathlib.Path = _imply_path(type(self), path, fspath=fspath)
|
||||
|
||||
# The explicit annotation is to avoid publicly exposing NodeKeywords.
|
||||
#: Keywords/markers collected from all scopes.
|
||||
|
@ -534,7 +536,7 @@ def get_fslocation_from_item(node: "Node") -> Tuple[Union[str, Path], Optional[i
|
|||
return getattr(node, "fspath", "unknown location"), -1
|
||||
|
||||
|
||||
class Collector(Node):
|
||||
class Collector(Node, abc.ABC):
|
||||
"""Base class of all collectors.
|
||||
|
||||
Collector create children through `collect()` and thus iteratively build
|
||||
|
@ -544,6 +546,7 @@ class Collector(Node):
|
|||
class CollectError(Exception):
|
||||
"""An error during collection, contains a custom message."""
|
||||
|
||||
@abc.abstractmethod
|
||||
def collect(self) -> Iterable[Union["Item", "Collector"]]:
|
||||
"""Collect children (items and collectors) for this collector."""
|
||||
raise NotImplementedError("abstract")
|
||||
|
@ -588,7 +591,7 @@ def _check_initialpaths_for_relpath(session: "Session", path: Path) -> Optional[
|
|||
return None
|
||||
|
||||
|
||||
class FSCollector(Collector):
|
||||
class FSCollector(Collector, abc.ABC):
|
||||
"""Base class for filesystem collectors."""
|
||||
|
||||
def __init__(
|
||||
|
@ -666,14 +669,14 @@ class FSCollector(Collector):
|
|||
return self.session.isinitpath(path)
|
||||
|
||||
|
||||
class File(FSCollector):
|
||||
class File(FSCollector, abc.ABC):
|
||||
"""Base class for collecting tests from a file.
|
||||
|
||||
:ref:`non-python tests`.
|
||||
"""
|
||||
|
||||
|
||||
class Item(Node):
|
||||
class Item(Node, abc.ABC):
|
||||
"""Base class of all test invocation items.
|
||||
|
||||
Note that for a single function there might be multiple test invocation items.
|
||||
|
@ -739,6 +742,7 @@ class Item(Node):
|
|||
PytestWarning,
|
||||
)
|
||||
|
||||
@abc.abstractmethod
|
||||
def runtest(self) -> None:
|
||||
"""Run the test case for this item.
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ def exit(
|
|||
only because `msg` is deprecated.
|
||||
|
||||
:param returncode:
|
||||
Return code to be used when exiting pytest.
|
||||
Return code to be used when exiting pytest. None means the same as ``0`` (no error), same as :func:`sys.exit`.
|
||||
|
||||
:param msg:
|
||||
Same as ``reason``, but deprecated. Will be removed in a future version, use ``reason`` instead.
|
||||
|
|
|
@ -1044,7 +1044,7 @@ class Pytester:
|
|||
The calling test instance (class containing the test method) must
|
||||
provide a ``.getrunner()`` method which should return a runner which
|
||||
can run the test protocol for a single item, e.g.
|
||||
:py:func:`_pytest.runner.runtestprotocol`.
|
||||
``_pytest.runner.runtestprotocol``.
|
||||
"""
|
||||
# used from runner functional tests
|
||||
item = self.getitem(source)
|
||||
|
@ -1395,7 +1395,7 @@ class Pytester:
|
|||
:param stdin:
|
||||
Optional standard input.
|
||||
|
||||
- If it is :py:attr:`CLOSE_STDIN` (Default), then this method calls
|
||||
- If it is ``CLOSE_STDIN`` (Default), then this method calls
|
||||
:py:class:`subprocess.Popen` with ``stdin=subprocess.PIPE``, and
|
||||
the standard input is closed immediately after the new command is
|
||||
started.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
"""Python test discovery, setup and run of test functions."""
|
||||
import abc
|
||||
import dataclasses
|
||||
import enum
|
||||
import fnmatch
|
||||
|
@ -380,7 +381,7 @@ del _EmptyClass
|
|||
# fmt: on
|
||||
|
||||
|
||||
class PyCollector(PyobjMixin, nodes.Collector):
|
||||
class PyCollector(PyobjMixin, nodes.Collector, abc.ABC):
|
||||
def funcnamefilter(self, name: str) -> bool:
|
||||
return self._matches_prefix_or_glob_option("python_functions", name)
|
||||
|
||||
|
|
|
@ -30,15 +30,6 @@ if TYPE_CHECKING:
|
|||
from numpy import ndarray
|
||||
|
||||
|
||||
def _non_numeric_type_error(value, at: Optional[str]) -> TypeError:
|
||||
at_str = f" at {at}" if at else ""
|
||||
return TypeError(
|
||||
"cannot make approximate comparisons to non-numeric values: {!r} {}".format(
|
||||
value, at_str
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def _compare_approx(
|
||||
full_object: object,
|
||||
message_data: Sequence[Tuple[str, str, str]],
|
||||
|
@ -806,27 +797,25 @@ def raises( # noqa: F811
|
|||
) -> Union["RaisesContext[E]", _pytest._code.ExceptionInfo[E]]:
|
||||
r"""Assert that a code block/function call raises an exception type, or one of its subclasses.
|
||||
|
||||
:param typing.Type[E] | typing.Tuple[typing.Type[E], ...] expected_exception:
|
||||
:param expected_exception:
|
||||
The expected exception type, or a tuple if one of multiple possible
|
||||
exception types are expected. Note that subclasses of the passed exceptions
|
||||
will also match.
|
||||
|
||||
:kwparam str | typing.Pattern[str] | None match:
|
||||
:kwparam str | re.Pattern[str] | None match:
|
||||
If specified, a string containing a regular expression,
|
||||
or a regular expression object, that is tested against the string
|
||||
representation of the exception and its `PEP-678 <https://peps.python.org/pep-0678/>` `__notes__`
|
||||
representation of the exception and its :pep:`678` `__notes__`
|
||||
using :func:`re.search`.
|
||||
|
||||
To match a literal string that may contain :ref:`special characters
|
||||
<re-syntax>`, the pattern can first be escaped with :func:`re.escape`.
|
||||
|
||||
(This is only used when :py:func:`pytest.raises` is used as a context manager,
|
||||
(This is only used when ``pytest.raises`` is used as a context manager,
|
||||
and passed through to the function otherwise.
|
||||
When using :py:func:`pytest.raises` as a function, you can use:
|
||||
When using ``pytest.raises`` as a function, you can use:
|
||||
``pytest.raises(Exc, func, match="passed on").match("my pattern")``.)
|
||||
|
||||
.. currentmodule:: _pytest._code
|
||||
|
||||
Use ``pytest.raises`` as a context manager, which will capture the exception of the given
|
||||
type, or any of its subclasses::
|
||||
|
||||
|
|
|
@ -257,11 +257,17 @@ def test_deprecation_of_cmdline_preparse(pytester: Pytester) -> None:
|
|||
def test_node_ctor_fspath_argument_is_deprecated(pytester: Pytester) -> None:
|
||||
mod = pytester.getmodulecol("")
|
||||
|
||||
class MyFile(pytest.File):
|
||||
def collect(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
with pytest.warns(
|
||||
pytest.PytestDeprecationWarning,
|
||||
match=re.escape("The (fspath: py.path.local) argument to File is deprecated."),
|
||||
match=re.escape(
|
||||
"The (fspath: py.path.local) argument to MyFile is deprecated."
|
||||
),
|
||||
):
|
||||
pytest.File.from_parent(
|
||||
MyFile.from_parent(
|
||||
parent=mod.parent,
|
||||
fspath=legacy_path("bla"),
|
||||
)
|
||||
|
|
|
@ -11,4 +11,5 @@ def pytest_collect_file(file_path, parent):
|
|||
|
||||
|
||||
class MyItem(pytest.Item):
|
||||
pass
|
||||
def runtest(self):
|
||||
raise NotImplementedError()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
anyio[curio,trio]==4.1.0
|
||||
django==4.2.7
|
||||
pytest-asyncio==0.23.1
|
||||
anyio[curio,trio]==4.2.0
|
||||
django==5.0
|
||||
pytest-asyncio==0.23.2
|
||||
pytest-bdd==7.0.1
|
||||
pytest-cov==4.1.0
|
||||
pytest-django==4.7.0
|
||||
|
|
|
@ -99,7 +99,8 @@ class TestCollector:
|
|||
conftest="""
|
||||
import pytest
|
||||
class CustomFile(pytest.File):
|
||||
pass
|
||||
def collect(self):
|
||||
return []
|
||||
def pytest_collect_file(file_path, parent):
|
||||
if file_path.suffix == ".xxx":
|
||||
return CustomFile.from_parent(path=file_path, parent=parent)
|
||||
|
@ -1509,6 +1510,9 @@ def test_fscollector_from_parent(pytester: Pytester, request: FixtureRequest) ->
|
|||
super().__init__(*k, **kw)
|
||||
self.x = x
|
||||
|
||||
def collect(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
collector = MyCollector.from_parent(
|
||||
parent=request.session, path=pytester.path / "foo", x=10
|
||||
)
|
||||
|
|
|
@ -73,6 +73,12 @@ def test_subclassing_both_item_and_collector_deprecated(
|
|||
"""Legacy ctor with legacy call # don't wana see"""
|
||||
super().__init__(fspath, parent)
|
||||
|
||||
def collect(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
def runtest(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
with pytest.warns(PytestWarning) as rec:
|
||||
SoWrong.from_parent(
|
||||
request.session, fspath=legacy_path(tmp_path / "broken.txt")
|
||||
|
|
Loading…
Reference in New Issue