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 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.

Conditionally skipping code blocks works with skipif, e.g.,

<!--pytest-codeblocks:skipif(sys.version_info <= (3, 7))-->

You can skip code blocks on import errors with

<!--pytest-codeblocks:importorskip(sympy)-->

Skip the entire file by putting

<!--pytest-codeblocks:skipfile-->

in the first line.

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
```

(Conditionally) Skipping the output verfication works by prepending the first block with skip/skipif (see above).

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.15.0.tar.gz (10.8 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.15.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file pytest_codeblocks-0.15.0.tar.gz.

File metadata

  • Download URL: pytest_codeblocks-0.15.0.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.27.1

File hashes

Hashes for pytest_codeblocks-0.15.0.tar.gz
Algorithm Hash digest
SHA256 69e504844547d03bd6da9ce4f98148bc272ff980c17a3f16ba0e554d65a9f8c2
MD5 ea1c5ffb3efdbf46c8c7798d5c74d956
BLAKE2b-256 ea550f6ecd886668d5e3dfec3550966250f10c9ddcaa55ba6e53fd8e13b9fcc4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pytest_codeblocks-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9728816ce7ff087c441f84fce1f565821bea70012362ad1e39c083245a05db1a
MD5 0654e09406a0e5cb2c4c3db49456bdf4
BLAKE2b-256 f6db51cac78c61287d371bd0dcd7477930b873442008907bd4499e4728cebd1e

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