pytest_notebook.ipy_magic module¶
Module to provide an IPython magic for running pytest.
Load via: %load_ext pytest_notebook.ipy_magic
,
then %pytest
and %%pytest
can be accessed.
-
pytest_notebook.ipy_magic.
eval_literals
(literals: List[str], local_ns: Optional[dict]) → List[Tuple[str, str]][source]¶ Evaluate and yield literal items.
-
pytest_notebook.ipy_magic.
load_ipython_extension
(ipython)[source]¶ Load the ipython magic, when the module is called via
%load_ext
.
-
pytest_notebook.ipy_magic.
parse_cell_content
(cell: Optional[str]) → Tuple[List[str], List[str], List[str]][source]¶ Parse the cell contents.
- Returns
(test_content, config_content, literals_content)
-
pytest_notebook.ipy_magic.
pytest
(line: str = '', cell: Optional[str] = None, local_ns: Optional[dict] = None)[source]¶ Run pytest.
%pytest arg1 arg2 ...
will run pytest in a temporary directory.%%pytest arg1 arg2 ...
will additionally write the cell contents to a test module in the temporary directory.The cell content can optionally contain a fenced sections:
---
: lines extracted and written aspytest.ini
***
: each line should be able to be evaluated as a tuple of two strings, (file_content, file_name), that will be written to the temporary directory. Any variables in the notebook scope can be used in these expressions.
Example:
%%pytest -v --- [pytest] adopts = --disable-warning --- *** (content_string, "test_other.py") *** def test_something(): assert True
Note: to change output width, se the ‘COLUMNS’ environmental variable:
import os os.environ["COLUMNS"] = "80"
-
pytest_notebook.ipy_magic.
run_pytest
(args: List[str], cwd: Union[str, pathlib.Path, None] = None)[source]¶ Run pytest, with live output.
Adapted from https://stackoverflow.com/a/18422264/5033292
Note: originally this used
pytest.main
to run pytest, however, there was issues with multiple calls to it (see: https://docs.pytest.org/en/latest/usage.html#calling-pytest-from-python-code).