Skip to main content

a nose plugin for IPython notebooks

Project description

Build Status PyPI BSD

a nose plugin for finding and running IPython 2/3 notebooks as nose tests.

What it can’t do in terms of setup and tearDown, nosebook makes up for in simplicity: there is no %%nose magic, no metadata required: the notebook on disk is the “gold master”.

This makes it ideal for decreasing the burden of keeping documentation up to date with tests by making a single set of notebooks into both rich, multi-format documentation and a simple part of your test suite.

How does it work?

Each notebook found according to `nosebook-match <#nosebook-match>`__ is started with a fresh kernel, based on the kernel specified in the notebook. If the kernel is not installed, no tests will be run and the error will be logged.

Each code cell that matches `nosebook-match-cell <#nosebook-match-cell>`__ will be executed against the kernel in the order in which it appears in the notebook: other cells e.g. markdown, raw, are ignored.

The number and content of outputs has to match exactly, with the following parts of each output stripped:

  • execution/prompt numbers, i.e. [1]:

  • tracebacks

Non-deterministic output, such as with _repr_ methods that include the memory location of the instance, will obviously not match every time. You can use `nosebook-scrub <#nosebook-scrub>`__ to rewrite or remove offending content.

Configuring nosetests to use nosebook

These options can be specified in your nose config file, or as long-form command line arguments, i.e. --with-nosebook.

with-nosebook

nosetests will look for notebooks that seem like tests, as configured with `nosebook-match <#nosebook-match>`__.

Default: False

# Basic usage
!nosetests --with-nosebook

nosebook-match

A regular expression that tells nosebook what should be a testable notebook.

Default: ``.*[Tt]est..ipynb$``*

# Run against all notebooks... probably not a good idea, but maybe a great idea
!nosetests --with-nosebook --nosebook-match .*.ipynb

nosebook-match-cell

A regular expression that will be replaced throughout the expected outputs and generated outputs.

Default: None

# will run cells where tests are defined... but you should probably run them, too
!nosetests --with-nosebook --nosebook-match .*Simple.* --nosebook-match-cell '(def|class).*[Tt]est'

nosebook-scrub

A regular expression that will be replaced throughout the expected outputs and generated outputs.

Default: None

# you can't fail if you don't try
!nosetests --with-nosebook --nosebook-scrub .+

For multiple scrub values, you can pass a JSON-formatted list of regular expressions or object of pattern-replacement pairs that will be replaced. When passed in via the command line, you’ll have to escape special characters: using a .noserc config file makes this easier.

# there are only 10 kinds of tests...
!nosetests --with-nosebook --nosebook-scrub='["0", "1"]'
# 0 is equally good
!nosetests --with-nosebook --nosebook-scrub='{"\\d+": "0"}'

Contributing

Issues and pull requests welcome!

License

nosebook is released as free software under the BSD 3-Clause license.

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

nosebook-0.4.0.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

nosebook-0.4.0-py2.py3-none-any.whl (9.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file nosebook-0.4.0.tar.gz.

File metadata

  • Download URL: nosebook-0.4.0.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for nosebook-0.4.0.tar.gz
Algorithm Hash digest
SHA256 f1ceefe3eaae5c3c69ef4702a1318171b0a1d08ec8716f10306a0df6bc4876bd
MD5 72fcb5546238816ecff6e19b2fd01de2
BLAKE2b-256 055ccf0416989ecbb237319049268f2ea62499099d7d4ee7488ab854f1d25ca2

See more details on using hashes here.

File details

Details for the file nosebook-0.4.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for nosebook-0.4.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0dae949e62670425bbc477643afa6a80334521d90e8471b6eeced1c92dc35625
MD5 f153313f5fddd9f0a4f9e5e4eb41287d
BLAKE2b-256 d578e45864e6a61ff83ecfa5b772a8b8836683a0a326da6cfc887b2c62434619

See more details on using hashes here.

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