Skip to main content
https://badge.fury.io/py/django-smoke-tests.svg https://github.com/kamilkijak/django-smoke-tests/actions/workflows/actions-run-tests.yml/badge.svg?branch=master https://codecov.io/gh/kamilkijak/django-smoke-tests/branch/master/graph/badge.svg

Django command that finds all endpoints in project, executes HTTP requests against them and checks if there are any unexpected responses.

https://i.imgur.com/cPK0y3W.gif

Requirements

  • Python (3.7, 3.8, 3.9, 3.10)

  • Django (2.2 LTS, 3.2 LTS)

Installation

Install using pip:

pip install django-smoke-tests

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'django_smoke_tests',
    ...
)

Quickstart

Execute smoke tests for the whole project:

python manage.py smoke_tests

Usage

Parameters

$ python manage.py smoke_tests --help
usage: manage.py smoke_tests [-h] [--http-methods HTTP_METHODS]
                             [--allow-status-codes ALLOW_STATUS_CODES]
                             [--disallow-status-codes DISALLOW_STATUS_CODES]
                             [--settings SETTINGS]
                             [--configuration CONFIGURATION]
                             [--fixture FIXTURE] [--no-migrations] [--no-db]
                             [app_names]

Smoke tests for Django endpoints.

positional arguments:
  app_names             names of apps to test

optional arguments:
  -h, --help            show this help message and exit
  --http-methods HTTP_METHODS
                        comma separated HTTP methods that will be executed for
                        all endpoints, eg. GET,POST,DELETE
                        [default: GET,POST,PUT,DELETE]
  -g, --get-only        shortcut for --http-methods GET
  --allow-status-codes ALLOW_STATUS_CODES
                        comma separated HTTP status codes that will be
                        considered as success responses, eg. 200,201,204;
                        404 is allowed by default for detail URLs (paths with parameters)
                        [default: 200,201,301,302,304,405]
  --disallow-status-codes DISALLOW_STATUS_CODES
                        comma separated HTTP status codes that will be
                        considered as fail responses, eg. 404,500
  --settings SETTINGS   path to the Django settings module, eg.
                        myproject.settings
  --configuration CONFIGURATION
                        name of the configuration class to load, eg.
                        Development
  --fixture FIXTURE     Django fixture JSON file to be loaded before executing
                        smoke tests
  --no-migrations       flag for skipping migrations, database will be created
                        directly from models
  --no-db               flag for skipping database creation

Skipping tests

To skip tests for specific URLs add SKIP_SMOKE_TESTS option in your settings.

This setting should contain list of URL pattern names.

SKIP_SMOKE_TESTS = (
    'all-astronauts',  # to skip url(r'^astronauts/', AllAstronauts.as_view(), name='all-astronauts')
    'missions:all-launches',  # to skip 'all-launches' from 'missions' app
)

Reporting bugs

If you face any problems please report them to the issue tracker at https://github.com/kamilkijak/django-smoke-tests/issues

Contributing

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install tox
(myenv) $ tox

Credits

Tools used in rendering this package:

Release files for django-smoke-tests 2.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-smoke-tests 2.1.0
File Size Uploaded
django-smoke-tests-2.1.0.tar.gz 12.5 kB Details

Release files / django-smoke-tests-2.1.0.tar.gz

Download URL django-smoke-tests-2.1.0.tar.gz
Size 12.5 kB
Tags Source
SHA-256 checksum
How to use checksums
167dd434d743afca72ef18eb50c938d077fc738e34821fe246d5a0803fe7514d
BLAKE2b-256 checksum
How to use checksums
4664ea53ed436ba1006884b51273cdcb6fb41e8d29f6696d8e48011d5cb752dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.10

Release history Release notifications | RSS feed

This release

2.1.0 This release

1 release file

2.0.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page