web-dev-qa-db-fra.com

Comment faire des nosetests utiliser python3

J'essaie d'utiliser nosetests
❯ nosetests '/ pathTo/test'

mais il utilise python 2.7 pour mes tests:

sys.version_info(major=2, minor=7, micro=5, releaselevel='final', serial=0)

Certains échouent donc, car ils ont été écrits en python 3.3.

Je le contourne et installe l'environnement virtuel: 

pyvenv-3.3 py3env

Activé le:

source ~/py3env/bin/activate

Vérifiez python virsion dans un environnement virtuel:

❯ python --version                                                                                 ⏎
Python 3.3.3
(py3env)

Ok. Mais nosetest utilise toujours python2.7 même dans un environnement virtuel: 

sys.version_info(major=2, minor=7, micro=5, releaselevel='final', serial=0)

Donc, mes tests échouent. Comment faire en sorte que nez utilise python3?

23
Maxim Yefremov

Dans les versions Python 3.4 et supérieures: pour utiliser le nez, python3 suffit de lancer ...

python3 -m "nose"

... dans le répertoire cible avec les tests. 

Les configurations de l'environnement ne sont pas nécessaires.

25
Maxim Yefremov

J'ai trouvé moyen d'utiliser nosetest avec python3 sans environnement:

cd /Library/Frameworks/Python.framework/Versions/3.3/bin  

Et alors:

❯ nosetests-3.3 '/folder/with/tests'

nosetests-3.3 utilise python 3

C'est tout.

Et si vous voulez utiliser la commande nosetests au lieu de nosetests-3.3, ajoutez ~/.bash_profile:

nosetests()
{
    /Library/Frameworks/Python.framework/Versions/3.3/bin/nosetests-3.3 $1
}

Maintenant vous pouvez utiliser:

nosetests '/folder/with/tests'

de n'importe quel répertoire. Il utilise python3.

2
Maxim Yefremov

À installer:

Sudo apt-get install python-nose python3-nose

Courir:

nosetests-2.7 ; nosetests3

Cela exécute la suite de tests sous PY2 et PY3.

1
ArekBulski

Ce n'est pas un problème de virtualenv autant qu'un problème de Linux.

Cela signifie que lorsque vous utilisez la commande nosetests depuis le terminal, linux recherche dans ses chemins disponibles (/bin, /sbin ou quel que soit votre choix) un tel fichier exécutable.

Votre python global 2 nosetests est trouvé en premier et exécuté.

Votre variable virtuelle python3 nosetests se trouve plus tard dans la liste des chemins disponibles et n'est donc jamais atteinte.

Je suggérerais d'installer uniquement nose ou toute autre commande python par environnement virtuel.

0
l__flex__l