Getting started with pytest and pytest-django

Introduction

pytest and pytest-django are compatible with standard Django test suites and Nose test suites. They should be able to pick up and run existing tests without any or little configuration. This section describes how to get started quickly.

Talks, articles and blog posts

For general information and tutorials on pytest, see the pytest tutorial page.

Step 1: Installation

pytest-django can be obtained directly from PyPI, and can be installed with pip:

pip install pytest-django

Installing pytest-django will also automatically install the latest version of pytest. pytest-django uses pytest‘s plugin system and can be used right away after installation, there is nothing more to configure.

Step 2: Point pytest to your Django settings

You need to tell pytest which Django settings that should be used for test runs. The easiest way to achieve this is to create a pytest configuration file with this information.

Create a filed called pytest.ini in your project root directory that contains:

[pytest]
DJANGO_SETTINGS_MODULE=yourproject.settings

You can also specify your Django settings by setting the DJANGO_SETTINGS_MODULE environment variable or specifying the --ds=yourproject.settings command line flag when running the tests. See the full documentation on Configuring Django settings.

Step 3: Run your test suite

Tests are invoked directly with the py.test command, instead of manage.py test, that you might be used to:

py.test

Do you have problems with pytest not finding your code? See the FAQ I see an error saying “could not import myproject.settings”.

Next steps

The Usage and invocations section describes more ways to interact with your test suites.

pytest-django also provides some Django helpers to make it easier to write Django tests.

Consult the pytest documentation for more information in pytest itself.

Stuck? Need help?

No problem, see the FAQ on How/where can I get help with pytest/pytest-django? for information on how to get help.