pytest-djangoapp
https://github.com/idlesign/pytest-djangoapp
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.
-
It uses
setuptoolsentrypoints feature forpytestplugin discovery. It's not a problem by itself, but all kinds of bootstrapping with side effects made bypytest-djangojust on startup, make the plugin a poor choice for cases of system-wide (i.e. not venv) installations. -
Philosophy that next to no unit test should require DB access may be quite annoying.
-
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
Release files for pytest-djangoapp 1.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pytest_djangoapp-1.8.0.tar.gz | 18.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytest_djangoapp-1.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.4 kB
Release files / pytest_djangoapp-1.8.0.tar.gz
| Download URL | pytest_djangoapp-1.8.0.tar.gz |
|---|---|
| Size | 18.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d27065098729d22e9233fbccdb73c9d8095360ddb0e7b3d853071e8ac917e07d
|
|
BLAKE2b-256 checksum How to use checksums |
004d2c672fd1042acd9fb656fbe0448056a454bac778f6dd77bfd26157501b84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / pytest_djangoapp-1.8.0-py3-none-any.whl
| Download URL | pytest_djangoapp-1.8.0-py3-none-any.whl |
|---|---|
| Size | 25.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1edf4965327f29a4230fdac5bce52d89137758f2de639f73a243931c04bc0c03
|
|
BLAKE2b-256 checksum How to use checksums |
aecd11c0e7747e4bf3c7faf44c49e64fdd23ba0a129d250aaff058935e0209c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|