2 votes

Le mot de passe de la base de données est demandé lors de l'exécution de "manage.py test".

Quand j'essaie d'exécuter

manage.py test

une invite de mot de passe de la base de données s'affiche.

Auparavant, les tests s'exécutaient sans que je doive saisir manuellement le mot de passe de la base de données. Je viens de mettre à jour ma base de données vers postgres 8.4. Je suppose que c'est un paramètre que j'ai oublié.

Comment puis-je le configurer pour qu'il exécute les tests sans demander le mot de passe ?

Informations complémentaires :

J'ai créé la base de données avec l'utilisateur 'postgres', mais j'y accède dans django avec l'utilisateur 'postgis'. J'ai vérifié les permissions de ces utilisateurs, et elles sont les mêmes.

Lors de l'exécution du test, la base de données et les tables sont créées sans problème (aucun mot de passe n'est demandé). Ce n'est que lors de l'installation de 'Custom SQL' que le mot de passe est demandé.

RÉSOLUTION

Comme Carl l'a souligné, le fichier ~/.pgpass [*nix] et %APPDATA%. \postgresql\pgpass.conf (où %APPDATA% fait référence au sous-répertoire Application Data du profil de l'utilisateur) [Windows] vous permet de configurer les bases de données de manière à ne pas avoir à saisir un mot de passe à chaque fois.

Voir la documentation de postgres : Le fichier des mots de passe

J'ai vérifié ma configuration et il semble que ce fichier était/est auto-créé. J'ai mis à jour mon fichier de mots de passe et maintenant les tests de django s'exécutent sans avoir besoin de saisir manuellement un mot de passe sur chaque installation sql personnalisée.

1voto

Carl Meyer Points 30736

Les tests Django utilisent une base de données différente ; votre paramètre DATABASE_NAME avec "_test" ajouté. Ma première hypothèse est que quelque part dans votre configuration d'authentification Postgres (soit dans pg_hba.conf, soit dans un fichier ~/.pgpass), vous autorisez l'accès à DATABASE_NAME sans mot de passe, mais vous n'avez pas la même configuration pour DATABASE_NAME_test.

0voto

Roman Points 781

Je suppose que c'est un paramètre que j'ai oublie.

Je n'essaie pas de vous ridiculiser, mais parfois les solutions simples sont négligées : Avez-vous défini le paramètre DATABASE_PASSWORD dans votre fichier settings.py ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X