Source code for ewoks.tests.test_notebooks
import asyncio
import sys
from typing import Generator
if sys.platform.startswith("win"):
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
import pytest
import testbook
from testbook.client import TestbookNotebookClient
from .notebooks import notebook_path
_NOTEBOOK_OUTPUTS = {"running_workflows.ipynb": "result = 16"}
[docs]
@pytest.mark.parametrize("name", _NOTEBOOK_OUTPUTS)
def test_notebooks(name):
expected_output = _NOTEBOOK_OUTPUTS[name]
with notebook_path(name) as filename:
decorator = testbook.testbook(filename)
output_found = False
def verify_notebook(tb: TestbookNotebookClient) -> None:
tb.execute()
nonlocal output_found
for output in _iter_cell_outputs(tb):
print(output)
if expected_output in output:
output_found = True
break
decorator(verify_notebook)()
assert output_found
def _iter_cell_outputs(tb: TestbookNotebookClient) -> Generator[str, None, None]:
for cell in tb.nb.cells:
output_nodes = cell.get("outputs", [])
for output_node in output_nodes:
if output_node["output_type"] == "stream":
yield output_node["text"]