IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

unittest : lancer des test sur plusieurs fichiers


Sujet :

Python

  1. #1
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut unittest : lancer des test sur plusieurs fichiers
    Bonjour,
    existe-t-il un moyen simple de lancer une batterie de tests contenus dans différents fichiers Python ?

    PS : je sais comment faire des tests par "surclassage" mais pour le moment je ne sias lancer qu'un test sur un seul fichier. On ne se moque pas...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 369
    Points : 36 908
    Points
    36 908
    Par défaut
    Salut,
    Je suppose que tu entends pas là le lancement de plusieurs fichiers de test à la suite.

    Avant 2.7: le plus simple était de passer par nose: il dispose d'une commande nosetest qui permet de dire dans quels sous-répertoires chercher les tests.

    Après 2.7: le module unittest propose un équivalent documenté dans la rubrique Test Discovery de la doc
    - W

  3. #3
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    En fait, je suis sous Python3 et les choses semblent avoir changées...

    Il y a bien ceci mais sans exemple, autant ne rien mettre... A quand un comité d'évaluation des documentations...

    Je vais essayer de voir sur Google s'il y a des exemples...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 369
    Points : 36 908
    Points
    36 908
    Par défaut
    Salut,

    Quelle idée d'utiliser une 3.1 plutôt qu'attendre 3.2 ou 3.3?

    Les améliorations d'unittest déjà dispo. en 2.7 seront livrées à priori avec 3.2.
    Elles sont peut être incluses dans la 2.6.6 (je n'ai pas regardé)
    Pour les autres:

    la version 0.5.1 est incluse dans 2.7
    - W

  5. #5
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Quelle idée d'utiliser une 3.1 plutôt qu'attendre 3.2 ou 3.3?
    Je ne suis qu'un jeune padawan enthousiaste à l'idée d'utiliser Python 3. Je l'utilise depuis quelques mois déjà avec grand bonheur...

    Citation Envoyé par wiztricks Voir le message
    Les améliorations d'unittest déjà dispo. en 2.7 seront livrées à priori avec 3.2.
    J'attendrais alors...

    "Patient le padawan être doit" comme dirait le petit bonhomme vert.

  6. #6
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Le jeune padawan doit aussi cessé de lire en diagonale les messages. Il est tard et je délire gentiment...

    Je vais tester ta proposition. Cela me permettra au moins d'être au point pour la version 3.2.

  7. #7
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Finalement j'ai fait une recherche sur Google avec les termes trouvés sur les liens donnés ci-dessus.

    Ceci m'a amené au résultat suivant copié-collé stupidement sur la page indiquée dans le code (il y a peut-être plus élégant mais à cette heure j'ai la flemme de réfléchir) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #!/usr/bin/env python3
     
    """
    This file launches all the tests.
     
    Source used :
        http://agiletesting.blogspot.com/2005/01/python-unit-testing-part-1-unittest.html
    """
     
    import unittest
     
    CLASSES_OF_TESTS = [
       ...
                   ]
     
    def suiteOfTests():
        suiteOfTests = unittest.TestSuite()
     
        for oneClass in CLASSES_OF_TESTS:
            suiteOfTests.addTest(unittest.makeSuite(oneClass))
     
        return suiteOfTests
     
    unittest.TextTestRunner(verbosity=2).run(suiteOfTests())
    La liste CLASSES_OF_TESTS pourra être automatiquement remplie via un peu d'introspection avec des règles de nommage basiques des différents fichiers "test".

    Je mettrais un exemple ici plus tard pour compléter le post.

    De nouveau, un grand merci à wiztrick pour m'avoir aussi bien aguillé.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 369
    Points : 36 908
    Points
    36 908
    Par défaut
    ah ces jeunes toujours pressés.
    l'API documentée de discover repose aussi sur une extension du PEP 338 (python -m), je ne sais pas si elle est dispo. en 3.1 mais la doc suggère de passer par la commande unit2 dans ce cas.
    - W

  9. #9
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Bonjour,
    Citation Envoyé par wiztricks Voir le message
    l'API documentée de discover repose aussi sur une extension du PEP 338 (python -m), je ne sais pas si elle est dispo. en 3.1 mais la doc suggère de passer par la commande unit2 dans ce cas.
    J'ai essayé sans succés... Après j'ai peut-être mal compris quelque chose.

    En attendant, j'ai fait rapidement ceci qui me convient très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #!/usr/bin/env python3
     
    """
    This file launches all the tests.
     
    Source used :
        http://agiletesting.blogspot.com/2005/01/python-unit-testing-part-1-unittest.html
    """
     
    import inspect
    import unittest
     
    import tool_test_all
     
    VERBOSE = True
     
     
    #######################################
    # SEEKING FOR THE CLASSES DOING TESTS #
    #######################################
     
    def isTestLike(text):
        return text.lower().startswith('test')
     
    def findTestClass(oneModule, verbose = True,  depth = 0):
        """
        This functions looks for classes whose name starts with "test..."
        in module whose name also starts with "test...". The case used
        is not important.
        """
        if verbose:
            print('{0}+ Working in {1}'.format('    ' *depth ,
                                               oneModule.__name__))
     
        answer = []
     
    # We look for sub modules.
        for nameModuleFound, oneModuleFound in inspect.getmembers(oneModule,
                                                                  inspect.ismodule):
            if isTestLike(nameModuleFound):
                answer += findTestClass(oneModule = oneModuleFound,
                                        verbose = True,
                                        depth = depth + 1)
     
    # We look for sub modules.
        for nameClassFound, oneClassFound in inspect.getmembers(oneModule,
                                                                inspect.isclass):
            if isTestLike(nameClassFound):
                if verbose:
                    print('{0}- One test-like class found ---> {1}'.format('    ' *(depth+1),
                                                                           nameClassFound))
                answer.append(oneClassFound)
     
        return answer
     
    if VERBOSE:
        print('='*70)
     
    CLASSES_OF_TESTS = findTestClass(oneModule = tool_test_all,
                                     verbose = VERBOSE)
     
    if VERBOSE:
        print('='*70,
              '',
              sep = "\n")
     
    ########################################
    # LAUCHING ALL THE CLASSES DOING TESTS #
    ########################################
     
    def suiteOfTests():
        suiteOfTests = unittest.TestSuite()
     
        for oneClass in CLASSES_OF_TESTS:
            suiteOfTests.addTest(unittest.makeSuite(oneClass))
     
        return suiteOfTests
     
    # Here we go...
    if CLASSES_OF_TESTS:
        unittest.TextTestRunner(verbosity=2).run(suiteOfTests())
    else:
        print('No test has been found...')

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Comparer et stocker des données sur plusieurs fichiers Excel
    Par JohnKel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/06/2015, 17h17
  2. Réponses: 2
    Dernier message: 18/12/2010, 19h42
  3. [XL-2007] Importation des données sur plusieurs fichiers fermés
    Par starid dans le forum Excel
    Réponses: 8
    Dernier message: 18/07/2009, 17h54
  4. Effectuer des opérations sur plusieurs fichiers txt
    Par Jim la truite dans le forum MATLAB
    Réponses: 4
    Dernier message: 11/08/2008, 23h18
  5. des majuscules en minuscules sur plusieurs fichiers
    Par antakini dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/06/2008, 21h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo