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

Bibliothèques tierces Python Discussion :

Executer un CppUnittest avec un script python


Sujet :

Bibliothèques tierces Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut Executer un CppUnittest avec un script python
    Salut chers developpeurs!
    J'aimerais executer du CppUnittest et du NUnittest à l'aide d'un script python.
    Dans le code qui suit, il me faudra implementer le script "cppunit_runner.py" qui pourra m'executer les tests "BaseTest.sln" et "UtilTest.sln" par exemple. A la fin de l'execution, il doit avoir envoir de mail aux personne designer.
    Je ne sais pas comment commencer à ecrire ce scripte.
    Qulqu'un peut-il me donner une idée. Une exquise d'exemple ou un lien m'aiderait beaucoup.

    Merci d'avance

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- fichier de configuration pour tous les tests-->
    <run>
        <!-- parametres globaux !-->   
        <global>
            <!-- Path pour installation.! -->
            <basepath path="..\.."/>
     
            <!-- Path dans lequel les fichiers de protocol et d''archive sont deposés !-->
            <output path="..\Logs"/>
     
            <!-- Quelles personnes doivent être informés à propos d''erreurs de compilation? !-->
            <notify>
                <email name="xxx@hfg.de"/>
            </notify>
     
            <!-- Quel script dois etre executé pour le test? !-->
            <suiterunner type="CppUnit" script="./suiterunners/cppunit_runner.py"/>
        </global>
     
        <!-- Liste de tests à executer !-->
        <tests>
            <suite type="CppUnit">
                <!-- configuration generale pour la compilation et le cours du test !-->
                <configuration>
                    <!-- Path pour les tests. !-->
                    <testcasepath path="..\..\Source\Projects"/>
                    <!-- Executer le test seulement en version Debug ou en version release ou bien dans les deux versions? !-->
                    <runtests>
                        <debug/>
                        <release/>
                    </runtests>
                    <!-- Optionel: Quelles personnes doivent être informés à propos d''erreurs de compilation? !-->
                    <notify>
                        <email name="xxx@hkg.de" type="always"/>
                    </notify>
                </configuration>
                <test name="Base" path="Base\BaseTest\BaseTest.sln"/>
                <test name="Util" path="Util\UtilTest\UtilTest.sln"/>
            </suite>
        </tests>
    </run>

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    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 695
    Par défaut
    Cela semble être la suite de la discussion:

    http://www.developpez.net/forums/d78...er-xml-python/

    pour lequel vous avez déjà un script.
    Que voulez vous y ajouter?
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Cela semble être la suite de la discussion:

    http://www.developpez.net/forums/d78...er-xml-python/

    pour lequel vous avez déjà un script.
    Que voulez vous y ajouter?
    -W

    Merci pour la reaction. Je dois tout d'abordvdire que je suis nouveau en python.
    En fait, j'ai essayer de lire le fichier avec le code qui suit, et je suis bloqué quant à la continuité de la lecture.
    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
     
    #  cppunit_runners.py
    from xml.dom import minidom
    buildReceivers = []  # Liste der Leute die den Mail enpfangen
    configFile = minidom.parse('config.xml')
    #print configFile.toxml()
     
    # Read global data                                                                                     
    glob = configFile.getElementsByTagName(u"run")[0].getElementsByTagName(u"global")[0]
    #print glob.toxml()
     
    BasePath = glob.getElementsByTagName(u"basepath")[0].getAttribute(u"path")
    #print BasePath
     
    repository = glob.getElementsByTagName(u"output")[0].getAttribute(u"path")
    #print repository
     
    for receivers in glob.getElementsByTagName(u"notify")[0].getElementsByTagName(u"email"):               
        buildReceivers.append( receivers.getAttribute(u"name") )
        #print receivers.toxml()

    Citation Envoyé par wiztricks;10/08/2009
    Le fichier XML pourrait être l'entrée de testrunner.py.
    Dans ce cas, la modification pourrait se résumer à l'ajout d'un elif pour lancer
    testrunner.py lorsque l'extension du fichier est .XML et le laisser s'en débrouiller.
    Je n'ai bien compris ce que tu as voulu par là dire.
    Peux-tu s'il te plait me faire un exemple pour que je puisse mieux comprendre le processus?

    Merci d'avanace

    Merlinerick

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    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 695
    Par défaut
    Envoyé par wiztricks;10/08/2009
    Le fichier XML pourrait être l'entrée de testrunner.py.
    Dans ce cas, la modification pourrait se résumer à l'ajout d'un elif pour lancer
    testrunner.py lorsque l'extension du fichier est .XML et le laisser s'en débrouiller.
    Je n'ai bien compris ce que tu as voulu par là dire.
    Peux-tu s'il te plait me faire un exemple pour que je puisse mieux comprendre le processus?
    Dans ses commentaires, le .XML dit qu'il a été construit pour être interprété par testrunner.py.
    Je pensais que vous disposiez de testrunner et que votre soucis était de l'interfacer avec le script que vous donniez alors
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Dans ses commentaires, le .XML dit qu'il a été construit pour être interprété par testrunner.py.
    Je pensais que vous disposiez de testrunner et que votre soucis était de l'interfacer avec le script que vous donniez alors
    -W
    Salut, wiztricks!
    Justement, je ne dispose pas encore du test_runner. C'est en fait la premiere chose que je dois faire et la, je suis coincé.
    Voici ce que j'ai pu faire jusqu'ici:
    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
     
    #  testrunner.py
     
    def has_child_node(nodeList, name ):
        """Returns true if the xml node list nodeList contains a node of the given name."""
        for node in nodeList:
            if node.nodeName == name:
                return True
        return False
    # def has_child_node()
     
     
    from xml.dom import minidom
     
    buildReceivers = []  # Liste der Leute die den Mail enpfangen
    runTests = []
     
    configFile = minidom.parse('config.xml')
    print configFile.toxml()
     
     
    # Read global data                                                                                      
    glob = configFile.getElementsByTagName(u"run")[0].getElementsByTagName(u"global")[0]
    print glob.toxml()
     
    hicadBasePath = glob.getElementsByTagName(u"hicadbasepath")[0].getAttribute(u"path")
    print hicadBasePath
     
    repository = glob.getElementsByTagName(u"output")[0].getAttribute(u"path")
     
    for receivers in glob.getElementsByTagName(u"notify")[0].getElementsByTagName(u"email"):                
        buildReceivers.append( receivers.getAttribute(u"name") )
        print receivers.toxml()
     
     
     
     
     
     
    ### Read configuration data
    conf = configFile.getElementsByTagName(u"run")[0].getElementsByTagName(u"tests")[0]\
           .getElementsByTagName(u'suite')[0].getElementsByTagName(u'configuration')[0]
    print conf.toxml()
     
    testCasePath = conf.getElementsByTagName(u"testcasepath")[0].getAttribute(u"path")
    print testCasePath
     
    ##                                                                                                        
    if ( has_child_node( conf.getElementsByTagName(u"runtests")[0].childNodes, u"debug") ):        
        runTests.append(u"debug")
     
    if ( has_child_node( conf.getElementsByTagName(u"runtests")[0].childNodes, u"release") ):      
        runTests.append(u"release")
     
    print runTests
    J'ai besoin de ton aide pour la continuité (parser le fichier xml, etc...).

    Merci d'avance

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    J'ai pu "parser" le fichier xml (je ne sais pas si c'est juste) comme suit:
    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
     
    #  cppunit_runners.py
     
    def has_child_node(nodeList, name ):
    ##    nodeList = nodeList
    ##    name = name
        """Returns true if the xml node list nodeList contains a node of the given name."""
        for node in nodeList:
            if node.nodeName == name:
                return True
        return False
    # def has_child_node()
     
     
    from xml.dom import minidom
     
    buildReceivers = []  # Liste der Leute die den Mail enpfangen
    runTests = []
    solutionDirs = []    # Source directories to watch for changes
    projectName = []
     
     
    configFile = minidom.parse('config.xml')
    #print configFile.toxml()
     
    # Read global data                                                                                      
    glob = configFile.getElementsByTagName(u"run")[0].getElementsByTagName(u"global")[0]
    #print glob.toxml()
    basePath = glob.getElementsByTagName(u"hicadbasepath")[0].getAttribute(u"path")
    #print basePath
    repository = glob.getElementsByTagName(u"output")[0].getAttribute(u"path")
    #print repository         
     
    for receivers in glob.getElementsByTagName(u"notify")[0].getElementsByTagName(u"email"):                
        buildReceivers.append( receivers.getAttribute(u"name") )
        #print receivers.toxml()
     
    ### Read configuration data
    Test = configFile.getElementsByTagName(u"run")[0].getElementsByTagName(u"tests")[0]
    #print Test.toxml()
    testSuite = Test.getElementsByTagName(u"suite")[0]
    #print TestSuite.toxml()
    suiteType = Test.getElementsByTagName(u"suite")[0].getAttribute(u"type")
    #print suiteType
    conf = testSuite.getElementsByTagName(u"configuration")[0]
    #print conf.toxml()
    testSuiteRunner = conf.getElementsByTagName(u"suiterunner")[0].getAttribute(u"script")
    #print testSuiteRunner
    testCasePath = conf.getElementsByTagName(u"testcasepath")[0].getAttribute(u"path")
    #print testCasePath
     
    if ( has_child_node( conf.getElementsByTagName(u"runtests")[0].childNodes, u"debug") ):        
        runTests.append(u"debug")
    if ( has_child_node( conf.getElementsByTagName(u"runtests")[0].childNodes, u"release") ):      
        runTests.append(u"release")
    #print runTests
     
    for receivers in conf.getElementsByTagName(u"notify")[0].getElementsByTagName(u"email"):                
        buildReceivers.append( receivers.getAttribute(u"name") )
        #print receivers.toxml()
     
    for Name in testSuite.getElementsByTagName(u"test"):               
        projectName.append( Name.getAttribute(u"name") )
    print projectName
     
    for Solution in testSuite.getElementsByTagName(u"test"):
        solutionDirs.append( Solution.getAttribute(u"path") )
    print solutionDirs
    Comment est-ce que je peux maintenant executer le CppUnitTest avec le à l'aide du code ci-dessus?

    Merci une fois de plus de votre aide

    Merlinerick

Discussions similaires

  1. Se loguer automatiquement avec un script python
    Par bastien981 dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 14/05/2012, 15h45
  2. comparaison de deux fichiers textes avec un script python
    Par zekruss dans le forum Général Python
    Réponses: 1
    Dernier message: 10/11/2009, 05h52
  3. edition d'un fichier .txt avec un script python
    Par ziedzekri dans le forum Général Python
    Réponses: 7
    Dernier message: 06/10/2009, 00h14
  4. Pb d'execution de requete avec un script php
    Par ythierrin dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2003, 14h34
  5. Pb d'execution de requete avec un script php
    Par ythierrin dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 22/08/2003, 14h34

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