Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/idlesign/pytest-djangoapp
Nice pytest plugin to help you with Django pluggable application testing.
https://github.com/idlesign/pytest-djangoapp
django pytest pytest-plugin python python2 python3 testing testing-tools
Last synced: 8 days ago
JSON representation
Nice pytest plugin to help you with Django pluggable application testing.
- Host: GitHub
- URL: https://github.com/idlesign/pytest-djangoapp
- Owner: idlesign
- License: bsd-3-clause
- Created: 2018-06-16T04:05:31.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-09T01:50:05.000Z (about 1 month ago)
- Last Synced: 2024-10-15T03:21:50.116Z (24 days ago)
- Topics: django, pytest, pytest-plugin, python, python2, python3, testing, testing-tools
- Language: Python
- Homepage: https://github.com/idlesign/pytest-djangoapp
- Size: 181 KB
- Stars: 40
- Watchers: 3
- Forks: 6
- Open Issues: 10
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG
- Contributing: CONTRIBUTING
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
README
pytest-djangoapp
================
https://github.com/idlesign/pytest-djangoapp|release| |lic| |coverage|
.. |release| image:: https://img.shields.io/pypi/v/pytest-djangoapp.svg
:target: https://pypi.python.org/pypi/pytest-djangoapp.. |lic| image:: https://img.shields.io/pypi/l/pytest-djangoapp.svg
:target: https://pypi.python.org/pypi/pytest-djangoapp.. |coverage| image:: https://img.shields.io/coveralls/idlesign/pytest-djangoapp/master.svg
:target: https://coveralls.io/r/idlesign/pytest-djangoappDescription
-----------*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
* DB queries audit
* Live server & client UI testing
* etc.Suitable for testing apps for Django 1.8+.
How to use
----------Let's say you have classical tests placing (inside application directory):
.. code-block::
package_dir
|__ myapp
| |__ __init__.py
| |__ tests
| | |__ __init__.py
| | |__ conftest.py <- Configure djangoapp here.
|
|__ setup.pyAdd the following lines into `conftest.py` to configure `djangoapp` and start using it:
.. code-block:: python
# conftest.py
from pytest_djangoapp import configure_djangoapp_pluginpytest_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:.. code-block:: python
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``:.. code-block:: ini
# pytest.ini
[pytest]
addopts = -p no:djangoDocumentation
-------------http://pytest-djangoapp.readthedocs.org/