CALC provides a custom Django management command to run all linters and tests:
docker-compose run app python manage.py ultratest
To run just unit tests:
docker-compose run app py.test
For more information on running only specific tests, see
py.test
Usage and Invocations.
For more details on front end testing, see the front end guide.
Some tests use Selenium/WebDriver with Chrome and ChromeDriver to ensure that the back-end and front-end integrate properly. The following environment variables may be useful when configuring these tests:
-
WD_CHROME_ARGS
are command-line flags to pass to Chrome, e.g.--headless --no-sandbox --disable-setuid-sandbox
. -
TEST_WITH_ROBOBROWSER
is a boolean that indicates whether to run some integration tests using RoboBrowser instead of Selenium/WebDriver. Running tests with RoboBrowser can be much faster and less error-prone than via Selenium, but it also means that the tests are less end-to-end. -
SKIP_STATIC_ASSET_BUILDING
is a boolean that indicates whether to skip the building of front-end static assets before running any integration tests. This can be useful if you need to fix a broken test that doesn't require changing any front-end assets.
We use bandit for security-related static analysis.
To run bandit:
docker-compose run app bandit -r .
bandit's configuration is in the .bandit
file.