2010-07-27 6 views
9

Je travaille sur un projet récemment passé au framework unittest py.test. J'avais l'habitude d'appeler mes tests d'Eclipse, de sorte que je puisse utiliser le débogueur (par exemple en plaçant des points d'arrêt pour analyser comment une erreur de test se développe). Maintenant, ce n'est plus possible, car la seule façon d'exécuter les tests est via la ligne de commande blackbox.Comment utiliser py.test à partir de Python?

Existe-t-il un moyen d'utiliser py.test à partir de Python, de sorte que l'on ne soit pas obligé de quitter l'EDI? Les tests ne doivent bien sûr pas être effectués dans un processus séparé.

Répondre

18

Je pense que je peux maintenant répondre à ma propre question, il est assez simple:

import py 
py.test.cmdline.main(args) 

Ensuite, je peux exécuter ce module et ou démarrer avec le débogueur intégré.

args est la liste des arguments de ligne de commande, donc par exemple pour exécuter uniquement des tests particuliers que je peux utiliser quelque chose comme:

args_str = "-k test_myfavorite" 
py.test.cmdline.main(args_str.split(" ")) 
1

Je n'ai pas essayé avec eclipse, mais comme cela a été suggéré dans un related question, il est possible d'utiliser l'option de ligne de commande --pdb avec py.test. Peut-être qu'il est possible de configurer Eclipse de cette façon. Toutefois, l'appel de la norme import pdb;pdb.set_trace() n'appelle pas directement le débogueur. D'abord, il va émettre une erreur qui à son tour activera le débogueur. Cela pourrait ou non faire fonctionner les choses différemment.

+0

Merci, j'étais au courant de l'interrupteur '--pdb'. Je pense que dans ce cas, pdb est contrôlé et démarré par py.test, ce qui ne fonctionnera pas pour Eclipse (je veux que mon Eclipse en cours prenne en charge le débogage). – nikow

1

Peut-être que vous pourriez donner un essai à pycharm il a une intégration directe avec py.test (Je l'utilise au travail) et le débogueur fonctionne parfaitement.

+0

Merci, pour la suggestion. Tout récemment, j'ai eu l'occasion d'utiliser PyCharm 2.5, et je suis d'accord que cela fonctionne très bien. En ce moment, je suis un peu divisé entre PyCharm et Aptana Studio. – nikow

+0

@nikow: J'ai commencé à utiliser aptana ... je l'ai détesté, aussi, si vous vous familiarisez avec pycharm, vous pouvez également opter pour phpstorm, rubymine, intellij ... tous ces IDE sont de jetbrains, et ont la même structure, raccourcis ... Donc ça vaut vraiment la peine. J'ai l'habitude d'être un fan d'éclipse, mais sachez que les jetbrains m'ont eu :) –

+0

+1 pour PyCharm. J'utilisais Aptana pour PHP mais après avoir utilisé PyCharm, je vais passer progressivement aux produits JetBrain –

3

Ceci est maintenant pris en charge par pytest et décrit bien here dans la documentation.

0

Vous pouvez simplement lancer py.test --pdb si vous voulez juste un débogueur et ne pas besoin de l'IDE

Questions connexes