
Security News
ESLint Adds Official Support for Linting HTML
ESLint now supports HTML linting with 48 new rules, expanding its language plugin system to cover more of the modern web development stack.
.. image:: https://travis-ci.org/boxed/hammett.svg?branch=master :target: https://travis-ci.org/boxed/hammett
.. image:: https://codecov.io/gh/boxed/hammett/branch/master/graph/badge.svg :target: https://codecov.io/gh/boxed/hammett
Hammett is a fast python test runner that aims to be compatible with the parts of pytest most people use (unless that conflicts with the goal of being fast). It also adds some features that can dramatically improve your testing experience if you adapt more fully to hammett.
This will depend on how fast your test suite is. Hammett isn't magic, it's just a runner made by someone who cares about performance a lot. It aims to have minimal startup overhead and minimal overhead for each test. I have written some benchmarks for measuring this overhead which you can find at https://github.com/boxed/test-benchmarks (TL;DR if your test suite is < 1s in pytest you will see VAST improvements, if it's minutes or hours, not so much).
A real world example is running the test suite of tri.declarative:
Or iommi:
But even if your test suite is big and slow you can still get some big improvements out of hammett if you often run just one file or one test:
In iommi, running -k test_render_attrs_none
All of this is from a full and clean run. Hammett has features to avoid that!
In hammett you can optionally name your test files module__tests.py
(that's
two _
). This tells hammett that if you change module
only the tests in
module__tests.py
needs to be run. You can place those files either in the
tests directory or right next to the module you're testing.
Hammett keeps track of what modules and what tests have changed and runs only the tests it needs to. Assuming you lock your tests to a module like above.
If hammett gets confused you can delete the .hammett-db
file and it will
start from scratch.
pytest.mark
with pytest.raises
Some plugins work, but you have to specify to load them in setup.cfg:
.. code:: ini
[hammett]
plugins=
pytest_django
First install: :code:pip install hammett
Then run hammett: :code:python -m hammett
Hopefully it will run your entire test suite!
Hammett works with some pytest plugins, most notably pytest-django, at least for some projects. You need to specify what plugins hammett loads manually in setup.cfg though.
If you want to use the hammett specific feature of module__tests.py
-style
test files, you can still keep compatibility with pytest by specifying the
module of your project and the tests file pattern, like this:
.. code::
testpaths=
tests
my_project
python_files=
*__tests.py
Also keep importing pytest instead of hammett obviously.
BSD
FAQs
hammett is a fast python test runner
We found that hammett demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ESLint now supports HTML linting with 48 new rules, expanding its language plugin system to cover more of the modern web development stack.
Security News
CISA is discontinuing official RSS support for KEV and cybersecurity alerts, shifting updates to email and social media, disrupting automation workflows.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.