pytest-picked icon indicating copy to clipboard operation
pytest-picked copied to clipboard

Run the tests related to the changed files (according to Git) 🤓

=============== pytest-picked

.. image:: https://github.com/anapaulagomes/pytest-picked/workflows/Tests/badge.svg :target: https://github.com/anapaulagomes/pytest-picked/actions?query=workflow%3ATests :alt: See Test Status on Github Actions

.. image:: https://github.com/anapaulagomes/pytest-picked/workflows/Publish%20to%20Test%20PyPi/badge.svg :target: https://test.pypi.org/project/pytest-picked/ :alt: See Package Status on Test PyPI

.. image:: https://github.com/anapaulagomes/pytest-picked/workflows/Publish%20to%20PyPI/badge.svg :target: https://pypi.org/project/pytest-picked/ :alt: See Package Status on PyPI

.. image:: https://img.shields.io/conda/vn/conda-forge/pytest-picked.svg :target: https://anaconda.org/conda-forge/pytest-picked :alt: Conda forge package

.. image:: https://img.shields.io/pypi/pyversions/pytest-picked.svg :target: https://pypi.org/project/pytest-picked :alt: Supported Python versions

Run the tests related to the unstaged files or the current branch (according to Git)


.. image:: demo.gif :height: 400px :alt: Demo

Let's say you have the following output from git status:

::

$ git status

On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits)

Untracked files: (use "git add ..." to include in what will be committed)

api.py
tests/api/
tests/test_board.py

nothing added to commit but untracked files present (use "git add" to track)

Running pytest --picked, the plugin will run all tests that come from this output.

::

$ pytest --picked

============================= test session starts ============================= platform darwin -- Python 3.6.4, pytest-3.6.0, py-1.5.3, pluggy-0.6.0 rootdir: /Users/ana.gomes/personal-workspace/grandma, inifile: plugins: picked-0.1.0, mock-1.10.0, flask-0.10.0, deadfixtures-2.0.1 collecting 34 items Changed test files... 1. ['tests/test_board.py'] Changed test folders... 1. ['tests/api/'] collected 34 items

tests/test_board.py . [ 50%] tests/api/test_new.py . [100%]

=========================== 2 passed in 0.07 seconds ===========================

All tests will be run from files and folders which are modified but not yet committed. No more copy and paste!

Usage

::

$ pytest --picked

$ pytest --picked=first

$ pytest --picked --mode=branch

$ pytest --picked --mode=unstaged # default

$ pytest --picked --mode=branch --parent-branch=main # if your parent branch differs from "master"

Features

Using git status, this plugin allows you to:

  • Run only tests from modified test files
  • Run tests from modified test files first, followed by all unmodified tests

Installation

You can install pytest-picked via pip_ from PyPI_::

$ pip install pytest-picked

Contributing

Contributions are very welcome. Tests can be run with tox_, please ensure the coverage at least stays the same before you submit a pull request.

License

Distributed under the terms of the MIT_ license, "pytest-picked" is free and open source software

Issues

If you encounter any problems, please file an issue_ along with a detailed description.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter .. _@hackebrot: https://github.com/hackebrot .. _MIT: http://opensource.org/licenses/MIT .. _BSD-3: http://opensource.org/licenses/BSD-3-Clause .. _GNU GPL v3.0: http://www.gnu.org/licenses/gpl-3.0.txt .. _Apache Software License 2.0: http://www.apache.org/licenses/LICENSE-2.0 .. _cookiecutter-pytest-plugin: https://github.com/pytest-dev/cookiecutter-pytest-plugin .. _file an issue: https://github.com/anapaulagomes/pytest-picked/issues .. _pytest: https://github.com/pytest-dev/pytest .. _tox: https://tox.readthedocs.io/en/latest/ .. _pip: https://pypi.org/project/pytest-picked/ .. _PyPI: https://pypi.org/project/pytest-picked/