Changelog¶
1.11.0 - dropped support for python < 3.9 and fixed - pytest 8.4.0 (in progress)¶
- Dropped support for python <3.9 and added a proper github pages workflow (explicit). Removed
sixfrom dependencies. Fixed #79
1.10.6 - bugfixes and maintenance chores¶
- Refactored layout and CI. Fixed #56.
1.10.5 - pytest 8.1 compat¶
PR #70 to ensure pytest 8.1 compatibility, including:
- Fixed issue with
pytest>=8.1: FixedAttributeError: 'str' object has no attribute 'iter_parents', #68. Initial proposal in PR #67 by @larsoner. - Fixed issue with
pytest>=8.1: Adapt togetfixturedefssignature change, initial proposal in PR #65 by @bluetech.
Dropped support for pytest 2. Issue #66.
1.10.4 - python 3.5 xdist bugfix¶
- Fixed issue with
pytest-xdistand python 3.5:pathlibobjects were not properly handled by other stdlib modules in this python version. Fixed #59 - Changed the layout
1.10.3 - xdist bugfix + lazy pandas loading¶
-
pandasis now only imported when used, to speed up boot time. Fixes #49 -
Fixed issue with latest
pytest+pytest-xdistversions:pytest_harvest_xdist_worker_dumphook is now called correctly. Fixes #48
1.10.2 - CI/CD change¶
- This is a technical release to validate that migration to Github Actions worked.
1.10.1 - Now supporting :: in test ids¶
get_session_synthesis_dctnow properly handles test ids where::is present in the id. This fix propagates to all[module/session]_results_[dct/df]fixtures, too. Fixes #45
1.10.0 - Fixed issue on old pytest¶
- On pytest < 5.3,
lazy_valueparameters frompytest-caseswere wrongly inserted in themodule_results_dfas integer instead of objects. Fixed #43 thanks to newpytest-cases2.3.0.
1.9.3 - Fixed support for doctests¶
1.9.2 - bugfix¶
- Fixed issue sometimes happening when xdist is not installed. Fixed #40
1.9.1 - better packaging¶
- packaging improvements: set the "universal wheel" flag to 1, and cleaned up the
setup.py. In particular removed dependency tosixfor setup and addedpy.typedfile, as well as set thezip_safeflag to False. Removed tests folder from package. Fixes #38
1.9.0 - better pytest-xdist support¶
When pytest-xdist is used to distribute tests, worker node results are automatically stored in a file at the end of their respective pytest session using pickle, in a temporary .xdist_harvested/ folder. These results are automatically retrived and consolidated when any of the get_[module/session]_results_[dct/df] method is called from the master node. Finally, the temporary folder is deleted at the end of master node session. Fixes #36
New function get_fixture_store(session) to replace FIXTURE_STORE. It is robust to xdist distribution, hence preferred over direct use of FIXTURE_STORE.
1.8.0 - pytest-xdist compliance¶
-
For each of the
[module/session]_results_[dct/df]fixtures, an equivalentget_<fixture_name>(session, ...)helper function is available. This allows users to access the same level of functionality than the fixture, in places where fixtures are not available (typically in a pytest hook such as thepytest_sessionfinishsession finish hook). In addition the defaultFIXTURE_STOREis now a package variable, available directly or through the session-scopedfixture_storefixture. Fixed #33 and #34. -
Added an example in the documentation on how to use with pytest-xdist. Fixes #32
1.7.4 - pyproject.toml¶
Added a pyproject.toml file.
1.7.3 - python 2 bugfix¶
Fixed issue happening with python 2 when unicode_literals are used in the parameters receiving string types. Fixed #28
1.7.2 - added __version__ attribute¶
Added __version__ attribute at package level.
1.7.1 - added six dependency¶
It was missing from setup.py.
1.7.0 - @saved_fixture supports all scopes¶
-
Session-scoped and Module-scoped fixtures are now supported by
@saved_fixture. Fixes #17. -
Documentation: new API reference page.
1.6.1 - Minor improvements¶
Renamed argument in create_results_bag_fixture to align with the name used in saved_fixture (store instead of storage)
Now using decopatch for decorator creation. make_saved_fixture can thus be removed, and saved_fixture simplified.
Now using latest makefun>=1.5 so that saved_fixture create proper fixture wrappers, using @makefun.wraps.
1.6.0 - improved @saved_fixture + minor dependency change¶
Users can now use @saved_fixture to save not only the fixture, but also some views created from it. This is interesting if each fixture is huge but users just want to save small aspects of it (name, size, etc.). Fixed #21.
Dependency to decorator has been dropped and replaced with makefun.
1.5.0 - Bug fixes concerning fixtures¶
The fixture_store fixture, provided by the plugin, does not have autouse=True anymore. Fixed #20.
get_all_pytest_fixture_names now returns fixtures that are indirectly parametrized, as well as fixtures that are not parametrized. Fixed #19.
1.4.3 - Better exceptions for @saved_fixture¶
Now raising a better exception if @saved_fixture is used on session- or module-scope fixtures. Fixes #18
1.4.2 - Fixed results bags in presence of steps (2)¶
Another import error was causing results bag to be saved incorrectly in presence of steps.
1.4.1 - Fixed results bags in presence of steps¶
Results bags are now compliant with pytest-steps: there are now one per step. This fixed #16.
1.4.0 - Removed integration with pytest_steps in default fixtures¶
Integrating pytest-steps in default fixtures seemed like a bad idea because it led to automatic behaviour that could silently raise warnings. Let pytest-steps handle it on its side.
1.3.0 - Better integration with pytest_steps in default fixtures¶
Default fixtures module_results_df and session_results_df now automatically become multi-level indexed when pytest steps is installed and there are steps in the tests.
1.2.1 - Minor: new low-level API¶
New method get_all_pytest_fixture_names to list all fixture names used by items in a session.
1.2.0 - Added column in default dataframe synthesis fixtures¶
Fixtures module_results_df and session_results_df now contains the 'pytest_obj' column.
1.1.0 - New default fixtures + fixture parameter names fix¶
Created 6 fixtures registered by default by the plugin. Fixed #14:
fixture_storein anOrderedDictthat can be used as a fixture store, typically in@saved_fixture.results_bagis aResultsBag-typed results bag.session_results_dctandmodule_results_dctreturn a synthesis dictionary for all tests completed "so far", respectively in the session or module. They include contents from the defaultfixture_store, includingresults_bag.session_results_dfandmodule_results_dfare the dataframe equivalents ofsession_results_dctandmodule_results_dct
The documentation has been updated so that users can get started more quickly by leveraging them.
In addition:
get_session_synthesis_dctcan now take both asessionor arequestinput. If arequestis provided, the status of current item will be marked as 'pending', while not started items will be marked as 'unknown'.- fixed bug in
get_session_synthesis_dct: fixture parameters and saved fixtures where overriding each other in the final dict inflatten=Truemode. Now fixture parameters appear as'<fixture_name>_param'. Fixed #15. @saved_fixturecan now be used without arguments. By default it will store fixtures in the default session-scoped'fixture_store'fixture.HARVEST_PREFIXmoved tocommon.pyand is now exported at package level.
1.0.1 - Ordering bug fix¶
Fixed pytest ordering issue, by relying on place_as. See #18
1.0.0 - new methods for pytest session analysis¶
New methods are provided to analyse pytest session results:
- filter_session_items(session, filter=None) is the filtering method used behind several functions in this package - it can be used independently. pytest_item_matches_filter is the inner method used to test if a single item matches the filter.
- get_all_pytest_param_names(session, filter=None, filter_incomplete=False) lists all unique parameter names used in pytest session items, with optional filtering capabilities. Fixes #12
- is_pytest_incomplete(item), get_pytest_status(item), get_pytest_param_names(item) and get_pytest_params(item) allow users to analyse a specific item.
0.9.0 - get_session_synthesis_dct: filter bugfix + test id formatter¶
-
get_session_synthesis_dct: -
filternow correctly handles class methods. Fixed #11 - new
test_id_formatoption to process test ids. Fixed #9
0.8.0 - Documentation + better filters in get_session_synthesis_dct¶
-
Documentation: added a section about creating the synthesis table from inside a test function (fixes #4). Also, added a link to a complete example file.
-
get_session_synthesis_dct:filterargument can now contain module names (fixed #7). Also now the function filters out incomplete tests by default. A newfilter_incompleteargument can be used to display them again (fixed #8).
0.7.0 - Documentation + get_session_synthesis_dct improvements 2¶
-
Results bags do not measure execution time anymore since this is much less accurate than pytest duration. Fixes #6
-
get_session_synthesis_dctdoes not output the stage by stage details (setup/call/teardown) anymore by default, but a new optionstatus_detailsallows users to enable them. Fixes #5 -
get_session_synthesis_dcthas also 2 new optionsdurations_in_msandpytest_prefixto better control the output. -
Improved documentation.
0.6.0 - get_session_synthesis_dct improvements¶
get_session_synthesis_dctnow has a test objectfilter, aflattenoption, and and can now take optional storage objects as input to create a fully merged dictionary. Seehelp(get_session_synthesis_dct)for details. Fixes #3.
0.5.1 - Fixed bug with pytest 2.x¶
- Fixed #2.
0.5.0 - First public version¶
First version validated against the data science benchmark pattern (yet to be published)
get_session_synthesis_dctmethod to collect various test information already available@saved_fixturedecorator supports both a variable or a fixture for the storagecreate_results_bag_fixtureto create results bags- Documentation