For code tests, sphinx-exercise uses pytest.

Run the tests with the following command:

>> cd sphinx-exercise
>> pip install -e .[testing]
>> pytest

To run the tests in multiple isolated environments, you can also run tox

>> cd sphinx-exercise
>> tox

To test the build of documentation run

>> cd sphinx-exercise
>> tox docs-update


>> cd sphinx-exercise/docs
>> make clean
>> make html

Unit Testing

We use pytest for testing, pytest-regression to regenerate expected outcomes of test and pytest-cov for checking coverage.

To run tests with coverage and an html coverage report:

pytest -v --cov=sphinx_exercise --cov-report=html

Writing Tests

The module sphinx.testing is used to run sphinx builds for tests, in a temporary directory.

If creating a new source folder for test files, folder name should start with test-. Your folder should reside inside the tests/books directory, which has been set as the root directory for tests.

The tests should start with:

@pytest.mark.sphinx('html', testroot="mybook")

In the above declaration, html builder is used. And mybook is the source folder which was created with the name test-mybook inside tests/books folder.

Sphinx Application API is available as a parameter to all the test functions:

@pytest.mark.sphinx('html', testroot="mybook")
def mytest(app):