Skip to main content

IPython extension to run pytest for the current cell.

Project description

ipython_pytest

This little IPython extension gives you the ability to run tests using Pytest in an IPython Notebook.

The motivation for the extension was to make it possible to demonstrate test-driven development using pytest in an IPython notebook driven presentation.

This extension does not attempt to enable using notebooks as test suites. The intention is also not to collect test results from multiple cells, but to do separate test runs for cells in an interactive presentation.

This extension attempts to achieve for pytest what the ipython_nose extension does for nose. Unfortunately it isn’t able to inject globals from the notebook environment into the test like the %%nose cell magic in ipython_nose. Instead, in ipython_pytest, all imports, constants and helper functions need to be contained in the test cell itself.

Installation

  • Make sure your IPython Notebook server can import ipython_pytest.py (e.g. copy it to a directory in your PYTHONPATH, or modify PYTHONPATH before starting IPython Notebook). It’s also probably sufficient to have ipython_pytest.py in the directory from which you run the notebook, e.g.:

    $ ls
    ipython_pytest.py
    $ ipython notebook
  • You can also install it in a virtualenv in developent mode:

    $ cd ipython-pytest
    $ pip install -e .

Usage

  • Add a cell containing:

    %load_ext ipython_pytest

    somewhere in your notebook.

  • Write tests that conform to Pytest conventions, e.g.:

    def test_arithmetic():
        assert 1+1 == 2
  • Add a cell consisting of:

    %%pytest
    
    def test_my_stuff():
        assert 42 == 42

    to your notebook and run that cell. That will discover your test_* functions, run them, and show console output from Pytest.

  • Pass standard Pytest arguments to the magic:

    %%pytest --tb=short

Caveats

  • None of the objects defined in other cells of the notebook are available in the test cell.

Authors

  • Antti Kaihola <antti dot kaihola at eniram dot fi>

Other similar tools

Thanks to Taavi Burns for the idea in his ipython_nose package.

Christopher Prohm has created the ipytest package for running pytest and unittest tests in IPython notebooks.

Get the code

git clone https://github.com/akaihola/ipython_pytest.git

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ipython_pytest-0.0.1.tar.gz (3.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page