* Wed Jan 30 2019 email@example.com
- Sync with Factory (bsc#1123314)
- Switch the package to multibuild.
- Add fix_test_raises_exception_looks_iterable.patch from
* Wed Nov 14 2018 Ond?ej Súkup <firstname.lastname@example.org>
- update to 3.10.1
* Fix nested usage of debugging plugin (pdb)
* Block the stepwise plugin if cacheprovider is also blocked, as one
depends on the other.
* Parse minversion as an actual version and not as dot-separated strings.
* Fix duplicate collection due to multiple args matching the same packages.
* Fix item.nodeid with resolved symlinks.
* Fix collection of direct symlinked files, where the target does not match
* Fix TypeError in report_collect with _collect_report_last_write.
* Mon Nov 05 2018 Ond?ej Súkup <email@example.com>
- update to 3.10.0
* Resume capturing output after continue with __import__("pdb").set_trace().
* Add -sw, --stepwise as an alternative to --lf -x for stopping at the first
failure, but starting the next test invocation from that test.
* Make --color emit colorful dots when not running in verbose mode.
* Improve performance with collection reporting in non-quiet mode with terminals.
* The "collecting ?" message is only printed/updated every 0.5s.
* Fix false RemovedInPytest4Warning: usage of Session... is deprecated,
please use pytest warnings.
* Fix problems with running tests in package __init__.py files.
* Swallow warnings during anonymous compilation of source.
* Fix access denied error when deleting stale directories
created by tmpdir / tmp_path.
* Naming a fixture request will now raise a warning: the request fixture
is internal and should not be overwritten as it will lead to internal errors.
* Handle (ignore) exceptions raised during collection, e.g.
with Django's LazySettings proxy class.
* Added missing documentation about the fact that module names passed
to filter warnings are not regex-escaped.
* Display cachedir also in non-verbose mode if non-default.
* pdb: improve message about output capturing with set_trace.
* Do not display "IO-capturing turned off/on" when -s is used to avoid confusion.
* Improve message and stack level of warnings issued by monkeypatch.setenv
when the value of the environment variable is not a str.
* Fix "ValueError: Plugin already registered" with conftest plugins via symlink.
* Handle race condition between creation and deletion of temporary folders.
* Fix bug where the warning summary at the end of the test session was
not showing the test where the warning was originated.
* Fix regression when stacklevel for warnings was passed as positional
argument on python2.
* Add reference to empty_parameter_set_mark ini option in documentation
* Revert patching of sys.breakpointhook since it appears to do nothing.
* Apply an import sorter (reorder-python-imports) to the codebase.
* Remove use of unnecessary compat shim, six.binary_type
* Fri Oct 26 2018 Ond?ej Súkup <firstname.lastname@example.org>
- update to 3.9.2
* Improve error message when a recursive dependency between fixtures is detected.
* Fix logging messages not shown in hooks pytest_sessionstart() and pytest_sessionfinish().
* Fix unescaped XML raw objects in JUnit report for skipped tests
* Python 2: safely format warning message about passing unicode strings to
warnings.warn, which may cause surprising MemoryError exception when monkey
patching warnings.warn itself.
* Improve error message when it is not possible to determine a function?s signature.
* Pin setuptools>=40.0 to support py_modules in setup.cfg
* Restore the tmpdir behaviour of symlinking the current test run.
* Fix filename reported by warnings.warn when using recwarn under python2.
* For test-suites containing test classes, the information about the subclassed
module is now output only if a higher verbosity level is specified (at least ?-vv?).
* The following accesses have been documented as deprecated for years, but are now
actually emitting deprecation warnings.
* Add a Deprecation warning for pytest.ensuretemp as it was deprecated since a while.
* Improve usage errors messages by hiding internal details which can
be distracting and noisy.
This has the side effect that some error conditions that previously raised
generic errors (such as ValueError for unregistered marks) are now raising
* Log messages generated in the collection phase are shown when live-logging
is enabled and/or when they are logged to a file.
* Introduce tmp_path as a fixture providing a Path object.
* Deprecation warnings are now shown even if you customize the warnings
filters yourself. In the previous version any customization would override
pytest?s filters and deprecation warnings would fall back to being hidden by default.
* Allow specification of timeout for Testdir.runpytest_subprocess() and Testdir.run().
* Add returncode argument to pytest.exit() to exit pytest with a specific return code.
* Reimplement pytest.deprecated_call using pytest.warns so it supports
the match='...' keyword argument.
This has the side effect that pytest.deprecated_call now raises
pytest.fail.Exception instead of AssertionError.
* Improve error message when test functions of unittest.TestCase subclasses
use a parametrized fixture.
* request.fixturenames now correctly returns the name of fixtures
created by request.getfixturevalue().
* Warning filters passed as command line options using -W now take precedence
over filters defined in ini configuration files.
* Fix source reindenting by using textwrap.dedent directly.
* pytest.warn will capture previously-warned warnings in Python 2.
Previously they were never raised.
* Resolve symbolic links for args.
This fixes running pytest tests/test_foo.py::test_bar, where tests is
a symlink to project/app/tests: previously project/app/conftest.py would be
ignored for fixtures then.
* Fix duplicate printing of internal errors when using --pdb.
* pathlib based tmpdir cleanup now correctly handles symlinks in the folder.
* Display the filename when encountering SyntaxWarning.
* Update usefixtures documentation to clarify that it can?t be used
with fixture functions.
* Update fixture documentation to specify that a fixture can be invoked twice
in the scope it?s defined for.
* According to unittest.rst, setUpModule and tearDownModule were not implemented,
but it turns out they are. So updated the documentation for unittest.
* Add tempir testing example to CONTRIBUTING.rst guide
* The internal MarkerError exception has been removed.
* Port the implementation of tmpdir to pathlib.
* Exclude 0.00 second entries from --duration output unless -vv is passed
on the command-line.
* Fixed formatting of string literals in internal tests.
* Mon Sep 24 2018 Ond?ej Súkup <email@example.com>
- update to 3.8.1
- drop remove_mock.patch
* .pytest_cache directory is now automatically ignored by Git
* Fix the following error during collection of tests inside packages:
'TypeError: object of type 'Package' has no len()'
* Fix bug where indirect parametrization would consider the scope of all
fixtures used by the test function to determine the parametrization scope,
and not only the scope of the fixtures being parametrized.
* Fix crash of the assertion rewriter if a test changed the current working
directory without restoring it afterwards.
* Fix issue that prevented some caplog properties (for example record_tuples)
from being available when entering the debugger with --pdb.
* Fix UnicodeDecodeError in python2.x when a class returns a non-ascii binary
__repr__ in an assertion which also contains non-ascii text.
* Mon Sep 17 2018 Ond?ej Súkup <firstname.lastname@example.org>
- update to 3.8.0
* Config.warn has been deprecated, it should be replaced by calls
to the standard warnings.warn.
* Node.warn now supports two signatures:
+ node.warn(PytestWarning("some message")): is now the recommended way
to call this function. The warning instance must be a PytestWarning
or subclass instance.
+ node.warn("CI", "some message"): this code/message form is now deprecated
and should be converted to the warning instance form above.
* RemovedInPytest4Warning and PytestExperimentalApiWarning are now part
of the public API and should be accessed using pytest.RemovedInPytest4Warning
* @pytest.mark.filterwarnings second parameter is no longer regex-escaped,
making it possible to actually use regular expressions to check the warning message.
+ Note: regex-escaping the match string was an implementation oversight
that might break test suites which depend on the old behavior.
* Internal pytest warnings are now issued using the standard warnings module,
making it possible to use the standard warnings filters to manage those
warnings. This introduces PytestWarning, PytestDeprecationWarning
and RemovedInPytest4Warning warning types as part of the public API.
* DeprecationWarning and PendingDeprecationWarning are now shown by default
if no other warning filter is configured. This makes pytest more compliant
with PEP-0506. See the docs for more info.
* Warnings are now captured and displayed during test collection.
* PYTEST_DISABLE_PLUGIN_AUTOLOAD environment variable disables
plugin auto-loading when set.
* Added the count option to console_output_style to enable displaying
the progress as a count instead of a percentage.
* Added support for ?xfailed? and ?xpassed? outcomes
to the pytester.RunResult.assert_outcomes signature.
* Tue Sep 04 2018 Mat?j Cepl <email@example.com>
- Remove unnecessary patch 0001-Use-unittest.mock-if-is-only-aviable.patch
(it has been already included in 3.7.4)
* Tue Sep 04 2018 Ond?ej Súkup <firstname.lastname@example.org>
- update to 3.7.4
- drop 0001-Use-unittest.mock-if-is-only-aviable.patch
* Fix possible infinite recursion when writing .pyc files
* Cache plugin now obeys the -q flag when --last-failed and
- -failed-first flags are used.
* Fix bad console output when using console_output_style=classic
* Fixtures during teardown can again use capsys and capfd to inspect
output captured during tests.
* Fix bugs where unicode arguments could not be passed to testdir.runpytest
on Python 2.
* Fix double collection of tests within packages when the filename starts
with a capital letter
* Fix collection error when specifying test functions directly in the command
line using test.py::test syntax together with --doctest-modules
* Fix stdout/stderr not getting captured when real-time cli logging is active.
* Fix bug where --show-capture=no option would still show logs printed during
* Fix issue where teardown of fixtures of consecutive sub-packages were
executed once, at the end of the outer package.
* Wed Aug 22 2018 email@example.com
- update to 3.7.2
- add 0001-Use-unittest.mock-if-is-only-aviable.patch
* Fix filterwarnings not being registered as a builtin mark.
* Fix test collection from packages mixed with normal directories.
* Fix infinite recursion during collection if a pytest_ignore_collect
hook returns False instead of None.
* Fix bug where decorated fixtures would lose functionality
* Fix bug where importing modules or other objects with prefix pytest_ prefix
would raise a PluginValidationError.
* Fix AttributeError during teardown of TestCase subclasses which raise
an exception during __init__.
* Fix traceback reporting for exceptions with __cause__ cycles.
* Tue Aug 07 2018 firstname.lastname@example.org
- update to 3.7.1
* Raise immediately if approx() is given an expected value of a type it
doesn?t understand (e.g. strings, nested dicts, etc.).
* Correctly represent the dimensions of an numpy array when calling repr() on approx().
* Fix incompatibility with third party plugins during collection, which
produced the error object has no attribute '_collectfile'.
* Display the absolute path if cache_dir is not relative to the rootdir instead of failing.
* Fix compatibility problem with plugins and the warning code issued
by fixture functions when they are called directly.
* Fix infinite recursion in pytest.approx with arrays in numpy<1.13.
* iFix TypeError when the assertion message is bytes in python 3.
* Thu Aug 02 2018 email@example.com
- update to 3.7.0
* pytest_namespace has been deprecated.
* Calling a fixture function directly, as opposed to request them in a test
function, now issues a RemovedInPytest4Warning.
* New package fixture scope: fixtures are finalized when the last test of
a package finishes. This feature is considered experimental, so use it sparingly.
* Node.add_marker now supports an append=True/False parameter to determine
whether the mark comes last (default) or first.
* Fixture caplog now has a messages property, providing convenient access
to the format-interpolated log messages without the extra data provided by the formatter/handler.
* New --trace option to enter the debugger at the start of a test.
* Introduce pytester.copy_example as helper to do acceptance tests
against examples from the project.
* Mon Jul 16 2018 firstname.lastname@example.org
- update to pytest-3.6.3
- drop python_mock.patch
* Fix ImportWarning triggered by explicit relative imports in assertion-rewritten
* Fix error in pytest.approx when dealing with 0-dimension numpy arrays.
* No longer raise ValueError when using the get_marker API.
* Fix problem where log messages with non-ascii characters would not appear
in the output log file.
* No longer raise AttributeError when legacy marks can't be stored in functions.
* Fri Jun 22 2018 email@example.com
- update to 3.6.2
- add python_mock.patch for doc package
* Fix regression in Node.add_marker by extracting the mark object of
* Warnings without location were reported as None. This is corrected to now
report <undetermined location>.
* Continue to call finalizers in the stack when a finalizer in a former
scope raises an exception.
* Fix encoding error with print statements in doctests
* Improve display of hint about --fulltrace with KeyboardInterrupt.
* pytest?s testsuite is no longer runnable through python setup.py test
* fixed a bug where stdout and stderr were logged twice by junitxml when
a test was marked xfail.
* Fix usefixtures mark applyed to unittest tests by correctly
* Fix assertion rewriter compatibility with libraries that monkey patch file objects
* switch pytest to the src/ layout as we already suggested it for good practice
* Fix if in tests to support 3.7.0b5, where a docstring handling in AST got reverted.
* Remove some python2.5 compatibility code.
* Thu May 31 2018 firstname.lastname@example.org
- Update to version 3.6.0
* Revamp the internals of the ``pytest.mark`` implementation with correct per
node handling which fixes a number of long standing bugs caused by the old
design. This introduces new ``Node.iter_markers(name)`` and
``Node.get_closest_mark(name)`` APIs. Users are **strongly encouraged** to
read the `reasons for the revamp in the docs
or jump over to details about `updating existing code to use the new APIs
* Now when ``@pytest.fixture`` is applied more than once to the same function a
``ValueError`` is raised. This buggy behavior would cause surprising problems
and if was working for a test suite it was mostly by accident. (`#2334
* Support for Python 3.7's builtin ``breakpoint()`` method, see `Using the
builtin breakpoint function
details. (`#3180 <https://github.com/pytest-dev/pytest/issues/3180>`_)
* ``monkeypatch`` now supports a ``context()`` function which acts as a context
manager which undoes all patching done within the ``with`` block. (`#3290
* The ``--pdb`` option now causes KeyboardInterrupt to enter the debugger,
instead of stopping the test session. On python 2.7, hitting CTRL+C again
exits the debugger. On python 3.2 and higher, use CTRL+D. (`#3299
* pytest not longer changes the log level of the root logger when the
``log-level`` parameter has greater numeric value than that of the level of
the root logger, which makes it play better with custom logging configuration
in user code. (`#3307 <https://github.com/pytest-dev/pytest/issues/3307>`_)
+ Bug Fixes
* A rare race-condition which might result in corrupted ``.pyc`` files on
Windows has been hopefully solved. (`#3008
* Also use iter_marker for discovering the marks applying for marker
expressions from the cli to avoid the bad data from the legacy mark storage.
* When showing diffs of failed assertions where the contents contain only
whitespace, escape them using ``repr()`` first to make it easy to spot the
differences. (`#3443 <https://github.com/pytest-dev/pytest/issues/3443>`_)
+ Improved Documentation
* Change documentation copyright year to a range which auto-updates itself each
time it is published. (`#3303
+ Trivial/Internal Changes
* ``pytest`` now depends on the `python-atomicwrites
<https://github.com/untitaker/python-atomicwrites>`_ library. (`#3008
* Update all pypi.python.org URLs to pypi.org. (`#3431
* Detect `pytest_` prefixed hooks using the internal plugin manager since
``pluggy`` is deprecating the ``implprefix`` argument to ``PluginManager``.
* Import ``Mapping`` and ``Sequence`` from ``_pytest.compat`` instead of
directly from ``collections`` in ``python_api.py::approx``. Add ``Mapping``
to ``_pytest.compat``, import it from ``collections`` on python 2, but from
``collections.abc`` on Python 3 to avoid a ``DeprecationWarning`` on Python
3.7 or newer. (`#3497 <https://github.com/pytest-dev/pytest/issues/3497>`_)
* Sat Apr 28 2018 email@example.com
- update to version 3.5.1:
* Bug Fixes
+ Reset sys.last_type, sys.last_value and sys.last_traceback
before each test executes. Those attributes are added by pytest
during the test run to aid debugging, but were never reset so
they would create a leaking reference to the last failing test?s
frame which in turn could never be reclaimed by the garbage
+ pytest.raises now raises TypeError when receiving an unknown
keyword argument. (#3348)
+ pytest.raises now works with exception classes that look like
* Improved Documentation
+ Fix typo in caplog fixture documentation, which incorrectly
identified certain attributes as methods. (#3406)
* Trivial/Internal Changes
+ Added a more indicative error message when parametrizing a
function whose argument takes a default value. (#3221)
+ Remove internal _pytest.terminal.flatten function in favor of
+ Import some modules from collections.abc instead of collections
as the former modules trigger DeprecationWarning in Python
+ record_property is no longer experimental, removing the warnings
was forgotten. (#3360)
+ Mention in documentation and CLI help that fixtures with leading
_ are printed by pytest --fixtures only if the -v option is
* Thu Mar 29 2018 firstname.lastname@example.org
- update to 3.5.0
- new install dependency python-more-itertools
- more changes in CHANGELOG.rst
* Fri Mar 09 2018 email@example.com
- update to 3.4.2
* Removed progress information when capture option is no.
* Refactor check of bindir from exists to isdir.
* Fix TypeError issue when using approx with a Decimal value.
* Fix reference cycle generated when using the request fixture.
* [tool:pytest] sections in *.cfg files passed by the
- c option are now properly recognized.
* Fri Mar 02 2018 firstname.lastname@example.org
- fix dependencies for attrs, pluggy, py, six
* Thu Feb 22 2018 email@example.com
- update to 3.4.1
* Move import of doctest.UnexpectedException to top-level to avoid possible
errors when using --pdb.
* Added printing of captured stdout/stderr before entering pdb, and improved a
test which was giving false negatives about output capturing.
* Fix ordering of tests using parametrized fixtures which can lead to fixtures
being created more than necessary.
* Fix bug where logging happening at hooks outside of "test run" hooks would
cause an internal error.
* Detect arguments injected by unittest.mock.patch decorator correctly when
pypi mock.patch is installed and imported.
* Errors shown when a pytest.raises() with match= fails are now cleaner
on what happened: When no exception was raised, the "matching '...'" part got
removed as it falsely implies that an exception was raised but it didn't
match. When a wrong exception was raised, it's now thrown
instead of complaining about the unmatched text.
* Add Sphinx parameter docs for match and message args to pytest.raises
* Rename ParameterSet._for_parameterize() to _for_parametrize() in
order to comply with the naming convention.
* Sat Feb 10 2018 firstname.lastname@example.org
- update to version 3.4.0:
* Deprecations and Removals
+ All pytest classes now subclass object for better Python 2/3
compatibility. This should not affect user code except in very
rare edge cases. (#2147)
+ Introduce empty_parameter_set_mark ini option to select which
mark to apply when @pytest.mark.parametrize is given an empty
set of parameters. Valid options are skip (default) and
xfail. Note that it is planned to change the default to xfail in
future releases as this is considered less error prone. (#2527)
+ Incompatible change: after community feedback the logging
functionality has undergone some changes. Please consult the
logging documentation for details. (#3013)
+ Console output falls back to ?classic? mode when capturing is
disabled (-s), otherwise the output gets garbled to the point of
being useless. (#3038)
+ New pytest_runtest_logfinish hook which is called when a test
item has finished executing, analogous to
+ Improve performance when collecting tests using many
+ New caplog.get_records(when) method which provides access to the
captured records for the "setup", "call" and "teardown" testing
+ New fixture record_xml_attribute that allows modifying and
inserting attributes on the <testcase> xml node in JUnit
+ The default cache directory has been renamed from .cache to
.pytest_cache after community feedback that the name .cache did
not make it clear that it was used by pytest. (#3138)
+ Colorize the levelname column in the live-log output. (#3142)
* Bug Fixes
+ Fix hanging pexpect test on MacOS by using flush() instead of
+ Fix restoring Python state after in-process pytest runs with the
pytester plugin; this may break tests using multiple inprocess
pytest runs if later ones depend on earlier ones leaking global
interpreter changes. (#3016)
+ Fix skipping plugin reporting hook when test aborted before
plugin setup hook. (#3074)
+ Fix progress percentage reported when tests fail during
+ Incompatible change: -o/--override option no longer eats all the
remaining options, which can lead to surprising behavior: for
example, pytest -o foo=1 /path/to/test.py would fail because
/path/to/test.py would be considered as part of the -o
command-line argument. One consequence of this is that now
multiple configuration overrides need multiple -o flags: pytest
- o foo=1 -o bar=2. (#3103)
* Improved Documentation
+ Document hooks (defined with historic=True) which cannot be used
with hookwrapper=True. (#2423)
+ Clarify that warning capturing doesn?t change the warning filter
by default. (#2457)
+ Clarify a possible confusion when using pytest_fixture_setup
with fixture functions that return None. (#2698)
+ Fix the wording of a sentence on doctest flags used in
+ Prefer https://*.readthedocs.io over http://*.rtfd.org for links
in the documentation. (#3092)
+ Improve readability (wording, grammar) of Getting Started guide
+ Added note that calling pytest.main multiple times from the same
process is not recommended because of import caching. (#3143)
* Trivial/Internal Changes
+ Show a simple and easy error when keyword expressions trigger a
syntax error (for example, "-k foo and import" will show an
error that you can not use the import keyword in
+ Change parametrized automatic test id generation to use the
__name__ attribute of functions instead of the fallback argument
name plus counter. (#2976)
+ Replace py.std with stdlib imports. (#3067)
+ Corrected ?you? to ?your? in logging docs. (#3129)
* Thu Mar 26 2020 Tomá? Chvátal <email@example.com>
- Skip garbage test https://bugs.python.org/issue23841
- Update in SLE bsc#1167732
* Thu Mar 26 2020 Tomá? Chvátal <firstname.lastname@example.org>
- Do pull in properly pytest not pytest3
* Wed Mar 25 2020 Tomá? Chvátal <email@example.com>
- Remove docu part so we don't need to pull the dependencies
* Fri Oct 11 2019 Ond?ej Súkup <firstname.lastname@example.org>
- add attrs.patch - fix compatibility with attrs-19.2+
* Wed Sep 25 2019 Tomá? Chvátal <email@example.com>
- Revert the importlib-metadata.patch change from last
change and split it to separate patch adding more content:
* Wed Sep 11 2019 Tomá? Chvátal <firstname.lastname@example.org>
- Update importlib-metadata.patch to not pull in the importlib
on python 3.8+
* Tue Jun 11 2019 Tomá? Chvátal <email@example.com>
- Add missing quotes to the test call
* Fri Jun 07 2019 Tomá? Chvátal <firstname.lastname@example.org>
- Add patch to fix build with new sphinx:
- Add patch to fix build with new pluggy that uses importlib-metadata:
* Tue Feb 26 2019 Tomá? Chvátal <email@example.com>
- Add patch to build with new pluggy:
* Fri Jan 04 2019 firstname.lastname@example.org
- Switch the package to multibuild.
- Add fix_test_raises_exception_looks_iterable.patch from