2010-03-26 20:14:53 +00:00
|
|
|
======================
|
2012-02-17 20:04:11 +00:00
|
|
|
Testing GeoDjango apps
|
2010-03-26 20:14:53 +00:00
|
|
|
======================
|
|
|
|
|
|
|
|
Included in this documentation are some additional notes and settings
|
2016-01-28 14:16:46 +00:00
|
|
|
for :ref:`testing-postgis` users.
|
2010-03-26 20:14:53 +00:00
|
|
|
|
|
|
|
.. _testing-postgis:
|
|
|
|
|
|
|
|
PostGIS
|
|
|
|
=======
|
|
|
|
|
|
|
|
Settings
|
|
|
|
--------
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
|
|
|
|
The settings below have sensible defaults, and shouldn't require manual setting.
|
|
|
|
|
|
|
|
.. setting:: POSTGIS_VERSION
|
|
|
|
|
|
|
|
``POSTGIS_VERSION``
|
2016-01-03 10:56:22 +00:00
|
|
|
~~~~~~~~~~~~~~~~~~~
|
2010-12-22 00:21:35 +00:00
|
|
|
|
2010-03-26 20:14:53 +00:00
|
|
|
When GeoDjango's spatial backend initializes on PostGIS, it has to perform
|
2013-09-05 22:23:48 +00:00
|
|
|
an SQL query to determine the version in order to figure out what
|
2012-02-17 20:04:11 +00:00
|
|
|
features are available. Advanced users wishing to prevent this additional
|
2010-12-22 00:21:35 +00:00
|
|
|
query may set the version manually using a 3-tuple of integers specifying
|
2015-03-17 22:34:15 +00:00
|
|
|
the major, minor, and micro version numbers for PostGIS. For example,
|
|
|
|
to configure for PostGIS X.Y.Z you would use::
|
2010-03-26 20:14:53 +00:00
|
|
|
|
2015-03-17 22:34:15 +00:00
|
|
|
POSTGIS_VERSION = (X, Y, Z)
|
2010-03-26 20:14:53 +00:00
|
|
|
|
2012-02-17 20:04:11 +00:00
|
|
|
Obtaining sufficient privileges
|
2010-03-26 20:14:53 +00:00
|
|
|
-------------------------------
|
|
|
|
|
|
|
|
Depending on your configuration, this section describes several methods to
|
|
|
|
configure a database user with sufficient privileges to run tests for
|
2012-02-17 20:04:11 +00:00
|
|
|
GeoDjango applications on PostgreSQL. If your
|
2010-03-26 20:14:53 +00:00
|
|
|
:ref:`spatial database template <spatialdb_template>`
|
|
|
|
was created like in the instructions, then your testing database user
|
2012-02-17 20:04:11 +00:00
|
|
|
only needs to have the ability to create databases. In other configurations,
|
2010-03-26 20:14:53 +00:00
|
|
|
you may be required to use a database superuser.
|
|
|
|
|
2012-02-17 20:04:11 +00:00
|
|
|
Create database user
|
2016-01-03 10:56:22 +00:00
|
|
|
~~~~~~~~~~~~~~~~~~~~
|
2010-12-22 00:21:35 +00:00
|
|
|
|
2012-02-17 20:09:40 +00:00
|
|
|
To make a database user with the ability to create databases, use the
|
2023-02-09 15:48:46 +00:00
|
|
|
following command:
|
|
|
|
|
|
|
|
.. code-block:: shell
|
2010-03-26 20:14:53 +00:00
|
|
|
|
|
|
|
$ createuser --createdb -R -S <user_name>
|
|
|
|
|
|
|
|
The ``-R -S`` flags indicate that we do not want the user to have the ability
|
|
|
|
to create additional users (roles) or to be a superuser, respectively.
|
|
|
|
|
|
|
|
Alternatively, you may alter an existing user's role from the SQL shell
|
2023-02-09 15:48:46 +00:00
|
|
|
(assuming this is done from an existing superuser account):
|
|
|
|
|
|
|
|
.. code-block:: psql
|
2010-03-26 20:14:53 +00:00
|
|
|
|
|
|
|
postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;
|
|
|
|
|
2012-02-17 20:04:11 +00:00
|
|
|
Create database superuser
|
2016-01-03 10:56:22 +00:00
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
2010-12-22 00:21:35 +00:00
|
|
|
|
2023-02-09 15:48:46 +00:00
|
|
|
This may be done at the time the user is created, for example:
|
|
|
|
|
|
|
|
.. code-block:: shell
|
2010-03-26 20:14:53 +00:00
|
|
|
|
|
|
|
$ createuser --superuser <user_name>
|
|
|
|
|
|
|
|
Or you may alter the user's role from the SQL shell (assuming this
|
2023-02-09 15:48:46 +00:00
|
|
|
is done from an existing superuser account):
|
|
|
|
|
|
|
|
.. code-block:: psql
|
2010-03-26 20:14:53 +00:00
|
|
|
|
|
|
|
postgres# ALTER ROLE <user_name> SUPERUSER;
|
|
|
|
|
|
|
|
Windows
|
|
|
|
-------
|
2010-12-22 00:21:35 +00:00
|
|
|
|
2019-06-17 14:54:55 +00:00
|
|
|
On Windows platforms you can use the pgAdmin III utility to add superuser
|
|
|
|
privileges to your database user.
|
2010-03-26 20:14:53 +00:00
|
|
|
|
|
|
|
By default, the PostGIS installer on Windows includes a template
|
|
|
|
spatial database entitled ``template_postgis``.
|
|
|
|
|
2010-12-22 00:21:35 +00:00
|
|
|
.. _geodjango-tests:
|
2010-03-26 20:14:53 +00:00
|
|
|
|
2012-02-17 20:04:11 +00:00
|
|
|
GeoDjango tests
|
2010-12-22 00:21:35 +00:00
|
|
|
===============
|
2010-03-26 20:14:53 +00:00
|
|
|
|
2013-05-11 03:08:45 +00:00
|
|
|
To have the GeoDjango tests executed when :ref:`running the Django test suite
|
|
|
|
<running-unit-tests>` with ``runtests.py`` all of the databases in the settings
|
|
|
|
file must be using one of the :ref:`spatial database backends
|
|
|
|
<spatial-backends>`.
|
2010-12-22 00:21:35 +00:00
|
|
|
|
|
|
|
|
|
|
|
Example
|
2013-05-11 03:08:45 +00:00
|
|
|
-------
|
2010-03-26 20:14:53 +00:00
|
|
|
|
2010-12-22 00:21:35 +00:00
|
|
|
The following is an example bare-bones settings file with spatial backends
|
|
|
|
that can be used to run the entire Django test suite, including those
|
|
|
|
in :mod:`django.contrib.gis`::
|
2010-03-26 20:14:53 +00:00
|
|
|
|
2010-12-22 00:21:35 +00:00
|
|
|
DATABASES = {
|
2023-02-28 19:53:28 +00:00
|
|
|
"default": {
|
|
|
|
"ENGINE": "django.contrib.gis.db.backends.postgis",
|
|
|
|
"NAME": "geodjango",
|
|
|
|
"USER": "geodjango",
|
2010-12-22 00:21:35 +00:00
|
|
|
},
|
2023-02-28 19:53:28 +00:00
|
|
|
"other": {
|
|
|
|
"ENGINE": "django.contrib.gis.db.backends.postgis",
|
|
|
|
"NAME": "other",
|
|
|
|
"USER": "geodjango",
|
2016-02-19 09:11:01 +00:00
|
|
|
},
|
2010-12-22 00:21:35 +00:00
|
|
|
}
|
2010-03-26 20:14:53 +00:00
|
|
|
|
2023-02-28 19:53:28 +00:00
|
|
|
SECRET_KEY = "django_tests_secret_key"
|
2014-04-04 04:05:30 +00:00
|
|
|
|
2010-12-22 00:21:35 +00:00
|
|
|
Assuming the settings above were in a ``postgis.py`` file in the same
|
|
|
|
directory as ``runtests.py``, then all Django and GeoDjango tests would
|
2023-02-09 15:48:46 +00:00
|
|
|
be performed when executing the command:
|
|
|
|
|
|
|
|
.. code-block:: shell
|
2010-03-26 20:14:53 +00:00
|
|
|
|
2010-12-22 00:21:35 +00:00
|
|
|
$ ./runtests.py --settings=postgis
|
2013-05-11 03:08:45 +00:00
|
|
|
|
2023-02-09 15:48:46 +00:00
|
|
|
To run only the GeoDjango test suite, specify ``gis_tests``:
|
|
|
|
|
|
|
|
.. code-block:: shell
|
2013-05-11 03:08:45 +00:00
|
|
|
|
2015-03-17 15:35:11 +00:00
|
|
|
$ ./runtests.py --settings=postgis gis_tests
|