In general apps can be tested like other Django apps. In most cases you'll want to run your automated tests via the
nautobot-server test <app_module> command or, if using the
coverage Python library,
coverage run --module nautobot.core.cli test <app_module>.
Added in version 1.5.0
TEST_USE_FACTORIES setting defaults to
False when testing apps, primarily for backwards-compatibility reasons. It can prove a useful way of populating a baseline of Nautobot database data for your tests and save you the trouble of creating a large amount of baseline data yourself. We recommend adding
factory-boy to your app's development dependencies and settings
TEST_USE_FACTORIES = True in your app's development/test
nautobot_config.py to take advantage of this.
Added in version 1.5.0
Running Performance Tests¶
You need to install
django-slowtests as a part of your app dev dependency to run performance tests. It has a very intuitive way to measure the performance of your own tests for your app (all you have to do is tag your tests with
performance) and do
invoke performance-test to get the time to run your tests with
NautobotPerformanceTestRunner is used by adding the flag
--testrunner nautobot.core.tests.runner.NautobotPerformanceTestRunner to the
coverage run command used for unit tests. This flag will replace the default
NautobotTestRunner while retaining all its functionalities with the addition of performance evaluation after test
Checkout Performance Tests for more detail.
Gathering Performance Test Baseline Data¶
If you want to add baselines for your own test to
nautobot/core/tests/performance_baselines.yml or have your own baseline yaml file for performance testing, specify a different file path for
TEST_PERFORMANCE_BASELINE_FILE in app's development/test
nautobot_config.py, and store the output of
invoke performance-test --performance-snapshot command in that file.
--performance-snapshot flag will store the results of your performance test to
report.yml and all you need to do is copy/paste the result to the file set by
TEST_PERFORMANCE_BASELINE_FILE. Now you have baselines for your own tests!
Example output of
invoke performance-test --performance-snapshot:
tests: - name: >- test_run_job_with_sensitive_variables_and_requires_approval (nautobot.extras.tests.test_views.JobTestCase) execution_time: 4.799533 - name: test_run_missing_schedule (nautobot.extras.tests.test_views.JobTestCase) execution_time: 4.367563 - name: test_run_now_missing_args (nautobot.extras.tests.test_views.JobTestCase) execution_time: 4.363194 - name: >- test_create_object_with_constrained_permission (nautobot.extras.tests.test_views.GraphQLQueriesTestCase) execution_time: 3.474244 - name: >- test_run_now_constrained_permissions (nautobot.extras.tests.test_views.JobTestCase) execution_time: 2.727531
We recommend adding
django-slowtests to your app's development dependencies to leverage this functionality to build better performing apps.