项目作者: idlesign

项目描述 :
Nice pytest plugin to help you with Django pluggable application testing.
高级语言: Python
项目地址: git://github.com/idlesign/pytest-djangoapp.git
创建时间: 2018-06-16T04:05:31Z
项目社区:https://github.com/idlesign/pytest-djangoapp

开源协议:BSD 3-Clause "New" or "Revised" License

下载


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
  • 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):

  1. package_dir
  2. |__ myapp
  3. | |__ __init__.py
  4. | |__ tests
  5. | | |__ __init__.py
  6. | | |__ conftest.py <- Configure djangoapp here.
  7. |
  8. |__ pyproject.toml

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

```python title=”conftest.py”
from pytest_djangoapp import configure_djangoapp_plugin

pytest_plugins = configure_djangoapp_plugin()

  1. Fixtures usage examples can be found in the documentation and the source code.
  2. ## Testing an entire project
  3. Despite the fact that `djangoapp` is primarily aimed to reusable
  4. Django applications testing one can use it also to test a project (a set of apps).
  5. For that, pass a dotted settings module path into `settings` argument:
  6. ```python
  7. pytest_plugins = configure_djangoapp_plugin(
  8. settings='myproject.settings.settings_testing',
  9. migrate=False, # If you do not want to apply migrations.
  10. )

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:

ini title="pytest.ini" [pytest] addopts = -p no:django

Documentation

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