Skip to content

Testing with doctest

You can test code snippets in docstrings using doctest, a Python module for testing code snippets in documentation. This works because marimo notebooks are just Python programs.

See this notebook for an example:

Source code for examples/testing/running_doctests.py

Tip: paste this code into an empty cell, and the marimo editor will create cells for you

import marimo

__generated_with = "0.15.5"
app = marimo.App(width="medium")


@app.cell
def _():
    import marimo as mo
    return (mo,)


@app.function
def euclid_mcd(a: int, b: int) -> int:
    """Return the MCD between positive a, b.
    >>> euclid_mcd(42, 24)
    6
    >>> euclid_mcd(24, 42)
    6
    >>> euclid_mcd(42, 42)
    42
    """
    assert a > 0
    assert b > 0
    if a < b:
        a, b = b, a
    if (a != b):
        r = a - b
        return euclid_mcd(b, r)
    return a


@app.cell
def _(mo):
    # Include a reference to each function to test
    euclid_mcd

    import doctest

    failures, success = doctest.testmod(verbose=True)
    mo.md(f"Success: {success}, Failures: {failures}")
    return


if __name__ == "__main__":
    app.run()