Doctest w/ docutils

Built on doctest.

pytest plugin

Run doctests in .rst and .md files via pytest.

pytest plugin

Note

Before you begin, acquaint yourself with:

  • doctest

    • normal usage via:

      $ python -m doctest [file]
      
  • Know what docutils does: parses reStructuredText (.rst). With the helper of [myst-parser], it also parses markdown (.md)

reStructuredText

$ python -m doctest_docutils README.rst

That’s what doctest does by design. Pass -v for verbose output.

Markdown

If you install [myst-parser], doctest will run on .md files.

$ python -m doctest_docutils README.md

As with the reST example above, no output.

Internals

Note

To get a deeper understanding, dig into:

API

Doctest module for docutils.

doctest_docutils.is_allowed_version(version, spec)
function[source]

Check spec satisfies version or not.

This obeys PEP-440 specifiers: https://peps.python.org/pep-0440/#version-specifiers

Some examples:

>>> is_allowed_version('3.3', '<=3.5')
True
>>> is_allowed_version('3.3', '<=3.2')
False
>>> is_allowed_version('3.3', '>3.2, <4.0')
True
Parameters:
Return type:

bool

class doctest_docutils.TestDirective

Bases: Directive

Base class for doctest-related directives.

class doctest_docutils.TestsetupDirective

Bases: TestDirective

Test setup directive.

class doctest_docutils.TestcleanupDirective

Bases: TestDirective

Test cleanup directive.

class doctest_docutils.DoctestDirective

Bases: TestDirective

Doctest directive.

class doctest_docutils.MockTabDirective

Bases: TestDirective

Mock tab directive.

doctest_docutils.setup()
function[source]

Configure doctest for doctest_docutils.

Return type:

dict[str, Any]

doctest_docutils._directive_registry()
function[source]

Return docutils directive registry with typing info.

Return type:

dict[str, Any]

doctest_docutils._ensure_directives_registered()
function[source]

Register doctest-related directives once per interpreter.

Return type:

None

exception doctest_docutils.DocTestFinderNameDoesNotExist
exception[source]

Bases: ValueError

Raised with doctest lookup name not provided.

class doctest_docutils.DocutilsDocTestFinder

Bases: object

DocTestFinder for doctest-docutils.

Class used to extract the DocTests relevant to a docutils file. Doctests are extracted from the following directive types: doctest_block (doctest), DocTestDirective. Myst-parser is also supported for parsing markdown files.

exception doctest_docutils.TestDocutilsPackageRelativeError
exception[source]

Bases: Exception

Raise when doctest_docutils is called for package not relative to module.

doctest_docutils.testdocutils(filename, module_relative=True, name=None, package=None, globs=None, verbose=None, report=True, optionflags=0, extraglobs=None, raise_on_error=False, parser=<doctest.DocTestParser object>, encoding=None)
function[source]

Docutils-based test entrypoint.

Based on doctest.testfile at python 3.10

Parameters:
Return type:

TestResults

doctest_docutils._test()
function[source]

Execute doctest module via CLI.

Port changes from standard library at 3.10:

  • Sets up logging.basicLogging(level=logging.DEBUG) w/ args.verbose

Return type:

int