web-dev-qa-db-fra.com

Comment utiliser pytest avec virtualenv?

J'ai installé pytest dans virtualenv et je l'exécute depuis cet env virtuel, mais il n'utilise pas les packages que j'ai installés dans cet env virtuel. Au lieu de cela, il utilise les packages principaux du système. (Avec "python -m unittest discover", je peux réellement exécuter mes tests avec le bon python et les bons packages, mais je souhaite utiliser le framework py.test.)

Est-il possible que py.test n'exécute pas le pytest dans virtualenv et je dois spécifier quel pytest doit être exécuté?

Comment faire pour que py.test utilise uniquement le python et les packages contenus dans mon virtualenv?

De plus, comme j'ai plusieurs pythons sur mon système, comment puis-je savoir quel python python utilise? Utilisera-t-il automatiquement le python dans mon virtualenv ou dois-je le spécifier?

19
Henry Grantham

Dans votre environnement, vous pouvez essayer

python -m pytest
22
Icarus

Dans mon cas, je suis obligé de quitter le venv (désactiver), supprimer pytest (pip uninstall pytest), saisir le venv (source/mon/chemin/vers/venv), puis réinstaller pytest (pip install pytest). Je ne sais pas exactement pourquoi pip refuse d'installer pytest in venv (il est déjà présent).

J'espère que ça aide

3
jmcollin92

Il y a un peu de danse pour que cela fonctionne:

  1. activer votre venv: source venv/bin/activate
  2. installer pytest: pip install pytest
  3. réactivez votre venv: deactivate && source venv/bin/activate

La raison en est que le chemin d'accès à pytest est défini par sourceing du fichier activate uniquement après que pytest est réellement installé dans venv. Vous ne pouvez pas définir le chemin d'accès à quelque chose avant son installation.

La ré-activate est requise pour tous les points d'entrée de la console installés dans votre environnement virtuel.

0
7yl4r

vous devez activer votre env. python chaque fois que vous voulez exécuter votre script python. Vous avez plusieurs façons de l'activer. Nous supposons que votre virtualenv est installé sous/home/venv:

1- le basé est d'exécuter le python avec une ligne de commande >>> /home/venv/bin/python <your python file.py>

2- ajoutez cette ligne en haut du fichier de script python #! /home/venv/bin/python puis exécutez python <you python file.py>

3- activez votre env source /home/venv/bin/activate python puis exécutez votre script comme python <you python file.py>

4- utilisez virtualenvwrapper manager et activez vos environnements python 

0
Mohamed Abdeljelil