Skip to main content

Nice pytest plugin to help you with Django pluggable application testing.

Project description

pytest-djangoapp

https://github.com/idlesign/pytest-djangoapp

PyPI - Version License Coverage Docs

Description

Nice pytest plugin to help you with Django pluggable application testing.

This exposes some useful tools for Django applications developers to facilitate tests authoring, including:

  • Settings overriding
  • Template tags testing
  • User creation
  • Request object creation
  • Management command calls
  • Mailing
  • Migrations
  • Messages
  • Signals
  • DB queries audit
  • Live server & client UI testing
  • Registered urlpatterns listing
  • Admin interface testing
  • etc.

Suitable for testing apps for Django 1.8+.

How to use

Let's say you have classical tests placing (inside application directory):

package_dir
|__ myapp
|  |__ __init__.py
|  |__ tests
|  |  |__ __init__.py
|  |  |__ conftest.py  <- Configure djangoapp here.
|
|__ pyproject.toml

Add the following lines into conftest.py to configure djangoapp and start using it:

from pytest_djangoapp import configure_djangoapp_plugin

pytest_plugins = configure_djangoapp_plugin()

Fixtures usage examples can be found in the documentation and the source code.

Testing an entire project

Despite the fact that djangoapp is primarily aimed to reusable Django applications testing one can use it also to test a project (a set of apps). For that, pass a dotted settings module path into settings argument:

pytest_plugins = configure_djangoapp_plugin(
    settings='myproject.settings.settings_testing',
    migrate=False,  # If you do not want to apply migrations.
)

What about pytest-django

pytest-djangoapp does not depend on pytest-django.

There are design decisions in pytest-django that might make it uncomfortable to work with.

  1. It uses setuptools entrypoints feature for pytest plugin discovery. It's not a problem by itself, but all kinds of bootstrapping with side effects made by pytest-django just on startup, make the plugin a poor choice for cases of system-wide (i.e. not venv) installations.

  2. Philosophy that next to no unit test should require DB access may be quite annoying.

  3. Some fixtures (e.g. django_assert_num_queries) usability arouse questions.

Despite that pytest-django is nice, of course.

pytest-djangoapp fixtures allow the use of Django without marking all relevant tests as needing a database, as is required by pytest-django which provides the django_db mark and db fixtures.

If you have pytest-django already installed, it can be disabled for projects using pytest-djangoapp by adding the following lines into pytest.ini:

[pytest]
addopts = -p no:django

Development

Use makeapp to streamline the development:

$ uv tool install makeapp
# or
$ uv tool upgrade makeapp

Clone the source code the repository and switch into its directory:

# bootstrap the utilities
$ ma tools
# initialize the environment
$ ma up

Check code style and run tests before your pull request:

$ ma style
$ ma tests

Documentation

http://pytest-djangoapp.readthedocs.io/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest_djangoapp-1.8.0.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_djangoapp-1.8.0-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

Details for the file pytest_djangoapp-1.8.0.tar.gz.

File metadata

  • Download URL: pytest_djangoapp-1.8.0.tar.gz
  • Upload date:
  • Size: 18.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pytest_djangoapp-1.8.0.tar.gz
Algorithm Hash digest
SHA256 d27065098729d22e9233fbccdb73c9d8095360ddb0e7b3d853071e8ac917e07d
MD5 dd34c64ff31c429bc1d6be8334028bde
BLAKE2b-256 004d2c672fd1042acd9fb656fbe0448056a454bac778f6dd77bfd26157501b84

See more details on using hashes here.

File details

Details for the file pytest_djangoapp-1.8.0-py3-none-any.whl.

File metadata

  • Download URL: pytest_djangoapp-1.8.0-py3-none-any.whl
  • Upload date:
  • Size: 25.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pytest_djangoapp-1.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1edf4965327f29a4230fdac5bce52d89137758f2de639f73a243931c04bc0c03
MD5 45c9ac326d7c6dbb2a70d855d4c78bba
BLAKE2b-256 aecd11c0e7747e4bf3c7faf44c49e64fdd23ba0a129d250aaff058935e0209c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page