Testing

This project uses unittest for testing. Tests must be placed in the tests directory. Each source module should have a corresponding test module.

Running Tests

Tests can easily be run all or individually by invoking python with the unittest module:

python -m unittest
python -m unittest tests/test_db.py

If coverage is installed, tests can also be run with coverage measurement:

coverage run --omit 'tests/*.py' --include './*' -m unittest
coverage report -m
coverage html

Afterwards a detailed coverage report is available in htmlconv/index.html.

Test Variables

DUMP_PAGES

Root directory to store generated html pages in. If unset, no pages are stored.

Common Fixtures

Note

Base test case classes define setUp() and tearDown(). Subclasses that overwrite these, must call super().methodName()!

class tests.BaseTestCase(methodName='runTest')

Base class for test cases that create temporary files

Variables

self.dir (str) – Path to temporary working directory

class tests.BlankAppTestCase(methodName='runTest')

Base class for test cases that operate on a blank flask app

The app instance will be configured for flask_sqlalchemy but without initialising the module.

Variables
  • self.dir (str) – Path to temporary working directory

  • self.app (flask.Flask) – app instance

class tests.AppTestCase(methodName='runTest')

Base class for test cases that operate on an instance of the project’s app

The app instance will be configured to use an empty database at a temporary location.

Variables
render_page(name, url, *args, **kwargs)

Wrapper for flask.Flask.test_client() that optionally dumps page content