We have just wrapped up the pytest development sprint, which was held 20-25 June 2016 in Freiburg, Germany. Other sprints have taken place at Python conferences, but this was the first dedicated standalone event. We had 27 participants from five continents!
It was funded by an indiegogo campaign which raised over US$12,000 with nearly 100 backers. Several companies generously donated $300 or more:
Participants travelled from around Europe and the UK, the US, Brazil, Australia and China.
Work started or finished included the following.
Discussions:
- what to include in pytest 3.0
- advanced intro sessions on plugin mechanics (pluggy) and the fixture system implementation
- tox roadmap
- Started to conceptualize generalized package builds and virtualenv creation
- process for removing deprecated features
- proposal for combining parametrize with fixtures
- new 'fromcontext'/'invocation' scope for fixtures and some initial prototyping
- lightning talks
Major features:
- dropping pytest assert reinterpret code
- rename binary from 'py.test' to 'pytest' (but don't worry,
py.test
will still work) - documentation restructuring
--setup-only
and--setup-plan
flags which show how fixtures are initialised without actually running the tests- Adding
-o
commandline option to override .ini config values
Other features:
- pytest-qt features - improvements towards a 2.0 release
- pytest-bdd enhancements
- pytest-django: triaged issues in general and made some progress especially with regard to better handle DB access/setup.
- pytest-html enhancements
- pytest-factoryboy enhancements
- pytest-selenium enhancements
- pytest-repeat enhancements
- pytest-environment research
- cookiecutter-pytest-plugin improvements
- 4 projects submitted to pytest-dev organisation
Bugs fixed/in progress:
- exit pytest on collection error
- markers stain on all related classes
- removed deprecated command line options
- incorrectly dropping brackets on display of assertions
- rename getfuncargvalue to getfixturevalue
- warning if you use getfuncargvalue with parametrized fixtures
- terminal newlines in failed test output
- escaping curly braces in a tox command doesn't work
- Tox shouldn't call pip directly to avoid shebang limitations
- missing evaluated value in report when asserting a boolean attribute
- improved determination of rootdir
In total 35 pull requests were merged to pytest, and at least 12 to tox, not to mention many others to plugins.
(It is worth noting that this is not an exhaustive list of all features that will go into pytest 3.0; a separate post will the full release notes will be made once the release is done.)
We also spent some time designing the stickers and t-shirts. Surveys went out to those who backed the fundraising campaign last week and the goods will be shipped very soon.
Thank you so much to everyone who supported the sprint. We have greatly improved our knowledge of pytest internals, expanded the pytest contributor community, and we're looking forward to bringing you pytest 3.0 very soon (aiming for before EuroPython)!