Skip to main content

Test code blocks in your READMEs

Project description

pytest-codeblocks

Test code blocks in your READMEs.

PyPi Version Anaconda Cloud PyPI pyversions GitHub stars PyPi downloads

gh-actions codecov LGTM Code style: black

This is pytest-codeblocks, a pytest plugin for testing code blocks from README files. It supports Python and shell code.

Install with

pip install pytest-codeblocks

and run pytest with

pytest --codeblocks
================================= test session starts =================================
platform linux -- Python 3.9.4, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: /path/to/directory
plugins: codeblocks-0.11.0
collected 56 items

example.md .......................                                              [ 50%]
README.md .......................                                               [100%]

================================= 56 passed in 0.08s ==================================

pytest-codeblocks will only pick up code blocks with python and sh/bash/zsh syntax highlighting.

Skipping code blocks

Prefix your code block with a pytest-codeblocks:skip comment to skip

Lorem ipsum

<!--pytest-codeblocks:skip-->

```python
foo + bar  # not working
```

dolor sit amet.

Merging code blocks

Broken-up code blocks can be merged into one with the pytest-codeblocks:cont prefix

Lorem ipsum

```python
a = 1
```

dolor sit amet

<!--pytest-codeblocks:cont-->

```python
# this would otherwise fail since `a` is not defined
a + 1
```

If you'd like to prepend code that you don't want to show, you can just comment it out; pytest-codeblocks will pick it up anyway:

Lorem ipsum

<!--
```python
a = 1
```
-->

dolor sit amet

<!--pytest-codeblocks:cont-->

```python
# this would otherwise fail since `a` is not defined
a + 1
```

Expected output

You can also define the expected output of a code block:

This

```sh
print(1 + 3)
```

gives

<!--pytest-codeblocks:expected-output-->

```
4
```

Expected errors

Some code blocks are expected to give errors. You can verify this with

The following gives an error:

<!--pytest-codeblocks:expect-error-->

```python
1 / 0
```

The keyword expect-exception is also possible.

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

pytest-codeblocks-0.11.3.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_codeblocks-0.11.3-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file pytest-codeblocks-0.11.3.tar.gz.

File metadata

  • Download URL: pytest-codeblocks-0.11.3.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for pytest-codeblocks-0.11.3.tar.gz
Algorithm Hash digest
SHA256 c553cdfb57e6afb86d0877f6bfd2bd5a3f2bd77c9df1eaa7e5a6e555eef26c4e
MD5 a882bf147a1c95e2300ba2ef4d46ab2d
BLAKE2b-256 7f9c4a24fc3798f2e513cc31c030ebf3576e267230d4994dfa7a558eaebd22dc

See more details on using hashes here.

File details

Details for the file pytest_codeblocks-0.11.3-py3-none-any.whl.

File metadata

  • Download URL: pytest_codeblocks-0.11.3-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for pytest_codeblocks-0.11.3-py3-none-any.whl
Algorithm Hash digest
SHA256 064ce3c1cd1cd38eb755bb1dd086e916138ad026e9d660cc7895a4be0005110c
MD5 23c48385d612333da19251c11696a8f6
BLAKE2b-256 3db48bbb566040c7fb179541cd5c3ad0a0123836954c20517b6abd7b959c6b07

See more details on using hashes here.

Supported by

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