web-dev-qa-db-fra.com

Pycharm - aucun test n'a été trouvé?

J'ai eu un 

Aucun test n'a été trouvé 

erreur dans Pycharm et je ne comprends pas pourquoi je l’obtiens ... voici ce que j’ai pour mon point_test.py:

import unittest
import sys
import os

sys.path.insert(0, os.path.abspath('..'))

from ..point import Point


class TestPoint(unittest.TestCase):
    def setUp(self):
        pass

    def xyCheck(self,x,y):
        point = Point(x,y)
        self.assertEqual(x,point.x)
        self.assertEqual(y,point.y)

et ce point.py, ce que j'essaie de tester: 

import unittest

from .utils import check_coincident, shift_point

class Point(object):
    def __init__(self,x,y,mark={}):
        self.x = x
        self.y = y
        self.mark = mark

    def patched_coincident(self,point2):
        point1 = (self.x,self.y)
        return check_coincident(point1,point2)

    def patched_shift(self,x_shift,y_shift):
        point = (self.x,self.y)
        self.x,self,y = shift_point(point,x_shift,y_shift)

Est-ce que quelque chose ne va pas avec ma configuration d'exécution? J'ai regardé ceci SO post, mais je suis encore complètement confus. Ma configuration d'exécution ressemble actuellement à ceci: 

 enter image description here

Je suppose que je comprends juste ce que je pourrais faire mal? Toute aide serait grandement appréciée, merci!! 

12
ocean800

pour reconnaître les fonctions de test, elles doivent être nommées test_ dans votre cas, renommez xyCheck en test_xyCheck :)

21
Joran Beasley

Je sais que la question a été posée il y a plus d'un an, mais j'avais le même problème et ce message était le premier résultat de la recherche.

Si j'ai bien compris, PyCharm (ou le plug-in Intellij Idea Python) a besoin que votre test réponde aux critères suivants si vous souhaitez le lancer lorsque vous exécutez tous les tests du répertoire.

  1. les fonctions de test doivent commencer par "test" (le trait de soulignement n'est pas nécessaire)
  2. le fichier contenant le test doit également commencer par "test". "Test" (avec majuscule T ne fonctionne pas dans mon cas

J'utilise Intellij IDEA 2016.3.5 avec le plugin Python

Si vous voulez exécuter vos tests avec la ligne de commande

python -m unittest

Ensuite, vous devriez ajouter __init__.py au répertoire test. Python veut toujours que vos noms de fonction de test commencent par "test", et vous testez le nom de fichier pour commencer par "test", mais dans le cas de fichiers, le fait que le premier "t" soit indifférent est indifférent. TestCase et test_case conviennent également. 

17
Ilya Sazonov

Vous voudrez peut-être vérifier si vous voyez dans la sortie de la console " ## tests désélectionnés par '-k XXXX' ". Cela signifie que vous avez ajouté Keyword à la configuration Run/Debug, et que Pycharm n'exécutera que les tests dont le nom contient le mot clé.

4
Keith

Un autre truc qui vient de me mordre.

J'ai eu un fichier de test dans mon paquet de test appelé test_queue.py qui a suivi tous les conseils ci-dessus, cependant lorsque j'ai sélectionné "Run UnitTests" dans PyCharm, la console n'a signalé aucun test trouvé.

Le problème dans mon cas était que j'avais un fichier de test non-unité à la racine du projet, également appelé test_queue.py, qui avait été utilisé à une autre fin au début du projet et qui avait été oublié.

Même si je sélectionnais spécifiquement le fichier de test dans mon dossier de tests et que le chemin était défini pour pointer absolument vers la version de test unitaire du fichier, il semble que le fichier situé à la racine du projet était utilisé.

Donc, encore une chose à vérifier, assurez-vous qu'il n'y a pas d'autres fichiers dans votre projet avec le même nom.

4
Graeme

N'utilisez pas de tirets ("-") dans votre nom de fichier. Ces fichiers étaient ignorés sur ma machine. en les renommant de project-tests.py à project_tests.py a résolu le problème.

4
invalidusername

Ajouter une autre réponse dans l’espoir que cela aide quelqu'un au bout du chemin. Je me suis battu contre ce problème et j'ai juste trouvé la réponse (je pense). À l'origine, j'avais supprimé le fichier Django standard tests.py de mon dossier d'application. J'ai également créé un sous-répertoire de mon projet appelé tests, qui contient des scripts de test distincts. Dans cette situation, Pycharm n'a pas réussi à trouver les tests. J'ai corrigé cela simplement en créant un fichier vide appelé tests.py dans mon dossier d'application. 

Alors:

  1. Assurez-vous d'avoir un fichier appelé tests.py dans votre directeur d'application (ce peut être un fichier vide).
  2. Il semble qu'un dossier appelé tests, dans votre projet, puisse contenir des scripts de test distincts et que Pycharm semble les rechercher et les exécuter.

Voici une image de la structure de répertoire qui fonctionne pour moi:

 enter image description here

2
Ben

J'ai eu cette exception lors de l'exécution de tests individuels dans un projet Django 1.8 dans PyCharm 2018.1. Je pouvais exécuter tous les tests ensemble, mais des tests individuels dans un fichier se sont écrasés.

L'exception se passait dans loader.py de unittest

Une erreur ImportError tentait d'importer test_admin_views.py, même si l'exception masquait les détails de cette erreur.

Pour voir les détails de ImportError, j'ai ouvert une console Python et lancé:

import my_app.users.tests.test_admin_views

Cela m'a donné:

Traceback (most recent call last):
  [...]
  File "my_app/my_app/users/tests/model_factories.py", line 42, in <module>
    from my_app.applications.tests.model_factories import ApplicationFactory
ImportError: cannot import name ApplicationFactory

J'ai remarqué que certaines des autres usines de ce fichier sont importées sans utiliser le chemin d'accès complet. J'ai donc essayé d'ajouter ApplicationFactory à la liste d'importation de chemins d'accès relatifs:

from .model_factories import UserFactory, UserGroupFactory, ApplicationFactory

Ce qui a fonctionné!

0
James Bradbury