17👍
Django will use the same connection settings as in your settings.py for tests, but will use a different database (by default, test_mydb
where your regular database is mydb
).
You can change the django user permissions to create databases in the psql shell. See this related answer for more info.
=> ALTER USER myuser CREATEDB;
I don’t know whether it’s possible to restrict the permission so that the django user can only create the database test_mydb
.
4👍
As of 2020 a superior option to giving Django the ability to create databases per other answers is just to use the --keepdb
flag when running your tests:
$ ./manage.py test --keepdb
This will keep the same db around between runs, which is much faster and doesn’t require giving your django user CREATEDB
permissions. More details here.
As @Alasdair previously noted, Django will use the same settings as your normal database by default but attempt to connect to or create a db at test_<your-database-name>
. You can also customize the test DB’s name with the TEST
dict in your DATABASE
settings.
- Pass a custom queryset to serializer in Django Rest Framework
- Why can I access an object during it's post_save Signal, but not when I trigger code within that signal that calls it on another process
0👍
For production, I faced error when executing the accepted answer solution.
Something like this:
django.db.utils.OperationalError: cannot drop the currently open database
For me, according to this link, I need to do:
ALTER USER <your_user> CREATEDB;
CREATE DATABASE postgres;
It needs to be postgres
for the test to work without raising
django.db.utils.OperationalError