Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

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


Release history Release notifications

Download files

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

Files for ipython_pytest, version 0.0.1
Filename, size File type Python version Upload date Hashes
Filename, size ipython_pytest-0.0.1.tar.gz (3.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page