2013-02-01 1 views
1

J'utilise pour exécuter des tests pour mon application django pytest avec le plugin pytest-django. J'utilise la base de données MySQL par défaut pour django. Est-il possible de spécifier juste pour pytest d'utiliser une base de données différente pour les tests, SQLite?Utiliser une base de données différente avec pytest

Je cherche une option différente s'il y en a, plutôt que de créer test_seetings.py spécial pour py.test --ds = test_settings.

+0

Peut-être un doublon de [cette question] (http://stackoverflow.com/questions/3096148/how-to-run-djangos-test-database-only-in-memory)? –

+0

Je pense que ces réponses sont pour exécuter des tests à travers manage.py. J'exécute des tests avec la commande py.test. –

+0

Ah alors ça ne s'applique pas à votre cas. –

Répondre

3

--ds=test_settings est le chemin à parcourir!

Si vous ne voulez pas taper --ds=... chaque fois que vous invoquez py.test, vous pouvez ajouter un pytest.ini avec ce contenu:

[pytest] 
DJANGO_SETTINGS_MODULE = test_settings 

Comme une note de côté: Il est conseillé d'utiliser la le même type de base de données que vous utilisez en production lors de l'exécution de vos tests. pytest-django fournit l'option --reuse-db pour réutiliser une base de données MySQL/Postgres entre les tests, économisant ainsi beaucoup de temps lors de l'exécution de quelques tests pour les projets avec beaucoup de modèles.

+0

Test en cours sur une base de données de production? Voulez-vous dire une base de données représentant une base de données de production ou une base de données utilisée en production? J'espère pas le dernier. – OrangeTux

+0

@OrangeTux Je suis tout à fait d'accord avec vous, cette phrase est trompeuse et pas ce que je l'avais prévu. Pour clarifier, je voulais dire que si vous utilisez PostgreSQL en production, vous devriez exécuter votre suite de tests sur une base de données PostgreSQL. Vous ne devriez pas * exécuter * vos tests sur votre base de données de production réelle avec des données de production. Certaines personnes suggèrent d'utiliser SQLite pour le développement local afin d'accélérer les tests - je pense que c'est un anti-pattern. --reuse-db est le moyen de continuer à avoir des tests rapides * et * assurez-vous que votre système fonctionne avec le même type de base de données que vous utilisez en production. – andreaspelme

+0

(Je ne peux pas sembler éditer la réponse originale, si n'importe qui avec assez de réputation peut faire cela, n'hésitez pas à reformuler la réponse) – andreaspelme

Questions connexes