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 :

Surcharge attribut de [class] Python/ [selenium]


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Surcharge attribut de [class] Python/ [selenium]
    Bonjour à tous,

    Je tente la surcharge d'un attribut d'une classe mère par une classe fille sur une classe de testcase selenium.
    Et bien sûr, je cale.
    Voici les codes :

    Classe mère :
    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
     
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    import unittest, time, sys
    import xml.etree.ElementTree as ET
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import Select
     
    class testmere (unittest.TestCase):
     
        def setUp(self, v="mere"):
            self.var = v
            print("setUp mere : var = " + self.var)
            if sys.version[0] == '2':
                # On force le système à utiliser l'encodage utf8 si on est sur du python 2...
                # En python 3, le system est en utf-8 par défaut
                reload(sys)
                sys.setdefaultencoding("utf-8")
     
        def test_mere(self):
            print("test_presence mere : var = " + self.var)
     
        def tearDown(self):
            print("tearDown mere : var = " + self.var)
     
    if __name__ == '__main__':
        print("execution main")
        unittest.main()
    Maintenant la fille :
    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
     
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    import unittest, time, sys
    from testmere import *
     
    class testfille (testmere):
     
        def setUp(self):
            if sys.version[0] == '2':
                # On force le système à utiliser l'encodage utf8 si on est sur du python 2...
                # En python 3, le system est en utf-8 par défaut
                reload(sys)
                sys.setdefaultencoding("utf-8")
            self.var = "fille"
            print("setUp fille : var = " + self.var)
     
        def test_presence(self):
            testmere.test_mere(self)
     
        def tearDown(self):
            testmere.tearDown(self)
     
    if __name__ == '__main__':
        t =  testfille()
    Et le résultat affiché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    setUp fille : var = fille
    test_presence mere : var = fille
    tearDown mere : var = fille
    setUp fille : var = fille
    test_presence mere : var = fille
    tearDown mere : var = fille
    setUp mere : var = mere
    test_presence mere : var = mere
    tearDown mere : var = mere
    Tous les résultats "var = fille" ==> OK, c'est ce que je veux.
    Mais pourquoi le code "var = mere" s'affiche ?
    Et comment l'inhiber ?

    Merci pour vos retours !

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Quel rapport avec selenium ?

    Le résultat que tu montres n'a rien à voir avec un retour d'unittest.

    Tout d'abord, supprimons de ton code ce qui ne sert à rien.
    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
     
     # -*- coding: utf-8 -*-
    import unittest
     
    class testmere(unittest.TestCase):
        def setUp(self, v="mere"):
            self.var = v
            print("setUp mere : var = " + self.var)
     
        def test_mere(self):
            print("test_presence mere : var = " + self.var)
     
        def tearDown(self):
            print("tearDown mere : var = " + self.var)
     
     
    class testfille(testmere):
        def setUp(self):
            self.var = "fille"
            print("setUp fille : var = " + self.var)
     
        def test_presence(self):
            self.test_mere()
     
        def tearDown(self):
            testmere.tearDown(self)
     
    if __name__ == '__main__':
        suite = unittest.TestSuite()
        suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase(testfille))
        unittest.TextTestRunner(verbosity=2).run(suite)
    et le résultat ressemble maintenant à un vrai unittest:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    test_mere (__main__.testfille) ... setUp fille : var = fille
    test_presence mere : var = fille
    tearDown mere : var = fille
    ok
    test_presence (__main__.testfille) ... setUp fille : var = fille
    test_presence mere : var = fille
    tearDown mere : var = fille
    ok
     
    ----------------------------------------------------------------------
    Ran 2 tests in 0.002s
     
    OK

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Salut VinsS,
    Merci pour ton retour.

    Je suis surpris du résultat sur mon environnement.
    Un copier/coller de ton code ne me donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    setUp fille : var = fille
    test_presence mere : var = fille
    tearDown mere : var = fille
    setUp fille : var = fille
    test_presence mere : var = fille
    tearDown mere : var = fille
    setUp mere : var = mere
    test_presence mere : var = mere
    tearDown mere : var = mere
    j'ai toujours l'exécution de la classe mère en plus de la fille.
    J'ai comme l'impression que mon environnement est bancale...

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Tu l'exécute directement dans un terminal ou bien dans un IDLE ?

    ça ne ressemble pas du tout à ce que fait unittest, tu as bien aussi collé ces lignes là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        suite = unittest.TestSuite()
        suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase(testfille))
        unittest.TextTestRunner(verbosity=2).run(suite)

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    (J'avais fait le copier/coller complet.)

    Tu m'as mis la puce à l'oreille :
    C'est pycharm qui me génère ces lignes erronées.
    En ligne de commande, ça fonctionne correctement.


    Merci pour ton intervention.
    Du coup, il faut que je cherche un autre IDLE...

  6. #6
    Membre régulier
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Amateur
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 52
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par progsam Voir le message
    Du coup, il faut que je cherche un autre IDLE...
    Ou que tu apprennes à utiliser pycharm...

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Je code, je fais un run, rien de bien compliqué.

    Maintenant si tu as des infos je suis preneur ...

Discussions similaires

  1. [Python 2.X] acceder à tout les attribut d'une classe python 2.5
    Par tsumey dans le forum Général Python
    Réponses: 5
    Dernier message: 11/06/2015, 11h38
  2. [C#/C++] Comment surcharger attribut d'1 Event de Control ?
    Par NicolasG dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/02/2006, 17h55
  3. Réponses: 3
    Dernier message: 08/12/2005, 14h41
  4. [css]problème d'attribution de classe dans deux listes
    Par Mitaka dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 24/11/2005, 18h05
  5. Réponses: 9
    Dernier message: 02/09/2005, 15h44

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