Developer’s documentation

Testing

Prerequisites

If you want to run the whole test suite, you’ll need to have a working Postgresql server instance (preferrably the latest), with the pg_virtualenv tool available. On Debian, this executable is provided by the package postgresql-common.

If you don’t have this tools in your toolbox, then… if you’re doing a change that impacts the performance records, you won’t be able to see or generate the diff, so your branch tests would fail.

Note

Postgresql driver is only available for Linux or MacOS.

Using tox

Tests are launched using tox. You may want to become proficient with this tool but the core command you need to know is:

$ tox

This will run all the test suite, combining

  • all versions of Django supported,
  • all the Python interpreters supported,
  • all versions of Django REST Framework supported,
  • on SQLite Databases + Postgresql Databases

Targeting a specific environment is done using:

$ tox -e django22-py38-drf310-sqlite

If you want to target a specific test, simply add its namespace after a double-dash --.

For example, the following will run test_fields test module using Django 2.2, Python 3.8 using a SQLite database:

$ tox -e django22-py38-drf310-sqlite -- tests.test_fields

And the following will run the same test class for all the supported environments:

$ tox -- tests.test_fields.RenderingFormatField

If somehow you’ve messed-up with your environment(s), you can still recreate it/them using:

$ tox -r  # RECREATE ALL THE THINGS
# recreate and run tests using django 2.2 + python 3.8 + DRF 3.10 + SQLite DB.
$ tox -re django22-py38-drf310-sqlite

Using py.test

You can also run tests with py.test.

You can install it with the following command:

$ pip install pytest{,-django}
# Optionally
$ pip install pytest-sugar

We’ve added a section in our setup.cfg, so you should be able to run tests simply with:

$ cd demo/
$ py.test

Swagger documentation update

If at any point you’ve changed something in the docs/swagger/formidable.yml file, you’ll have to run the following to refresh at least the docs/source/_static/specs/formidable.js file that will be used in the API Specifications document.

Run the following to regenerate all the necessary statics:

$ tox -e swagger-statics

and commit the diffs in your PR.