Test code blocks in your READMEs
Project description
Test code blocks in your READMEs.
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.
Marking code blocks
It is possible to use pytest.mark for marking code blocks. For example,
to skip a code block use pytest.mark.skip or pytest.mark.skipif:
Lorem ipsum
<!--pytest.mark.skip-->
```python
foo + bar # not working
```
dolor sit amet.
<!--pytest.mark.skipif(sys.version_info <= (3, 7), reason="Need at least Python 3.8")-->
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.
For expected errors, use pytest.mark.xfail:
The following gives an error:
<!--pytest.mark.xfail-->
```python
1 / 0
```
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
```
Use expected-output-ignore-whitespace if you'd like whitespace differences to
be ignored.
(Conditionally) Skipping the output verfication works by prepending the first
block with skip/skipif (see above).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytest_codeblocks-0.17.0.tar.gz.
File metadata
- Download URL: pytest_codeblocks-0.17.0.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
446e1babd182f54b4f113d567737a22f5405cade144c08a0085b2985247943d5
|
|
| MD5 |
541476d994c58528ea1116e907539a9b
|
|
| BLAKE2b-256 |
a5991ee3017a525dcb36566f0523938fbc20fb33ef8bf957205fafe6659f3a60
|
File details
Details for the file pytest_codeblocks-0.17.0-py3-none-any.whl.
File metadata
- Download URL: pytest_codeblocks-0.17.0-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2aed8e66c3ce65435630783b391e7c7ae46f80b8220d3fa1bb7c689b36e78ad
|
|
| MD5 |
a5a5daf60f3a540eea2c598a4a6bd271
|
|
| BLAKE2b-256 |
fa2c503f797c7ac1e35d81944f8fbcf3ea7a1965e435676570a833035d8d0937
|