cadre de tests unitaires python unittest

Test de l'unité

Fournir deux méthodes de chargement des tests unitaires:

1. Le module de test de test de l'unité de chargement directement par la méthode unittest.main ();

2. Ajoutez tous la suite de tests aux cellules d'essai fixées, et le chargement puis tous les objets de test à la fois.

cas de tests unitaires

unittest construit par le test TestCase classe, et exige que toutes les classes de test personnalisés doivent hériter de la classe, ce qui est la classe de base pour tous les cas de test. Créer une méthode de test personnalisé doit commencer par « test ».

Plusieurs classe spéciale méthode TestCase définie comme suit:

1. setUpClass (): Avant d'exécuter une méthode d'essai est exécuté, la préparation de test unitaire, doivent être modifiés pour utiliser décorateur @classmethod, exécutée avant que la fonction de réglage, le processus de test est effectuée une seule fois.

2. Installation (): méthode avant chaque essai, l'opération d'initialisation avant l'essai;

3. tearDown (): Procédé suivant la fin de chaque opération d'essai, nettoyer après l'essai;

Après la mise en œuvre de toute l'exécution de la méthode d'essai après la fin de la course, les tests unitaires tard pour nettoyer, vous devez utiliser décorateur @classmethod modifié, tearDown (), le processus de test est effectué qu'une seule fois: 4. tearDownClass ().

# Présentation du temps d' 
importation Temps
# introduit WebDriver bibliothèque
de WebDriver importation de sélénium
Présentation Module unittest # 
Importation unittest

visite (de unittest.TestCase) Classe:
    DEF setUp (auto):
        self.driver webdriver.Chrome = ()
   # appelle le code de l' API contenu dans le processus commence avec la commande "test"
    def test_visit (auto) :
        self.driver.get ( "http://www.baidu.com" )
        self.driver.find_element_by_id ( "kw" ) .send_keys ( "selenuim" )
        le time.sleep (2)
        Imprimer (self.driver.current_url)

    tearDown DEF (Self):
        self.driver.quit ()
méthode # principale () est la méthode par défaut des classes au début de l' exécution des tests, pas nécessairement une descendante mise en œuvre de tests, mais le nom de la méthode selon le codage ASCII selon l'emplacement de l'exécution de l' ordre.
la __name__ == IF '__main__' :
    unittest.main ()
méthodes Assertion

Par la méthode unittest fourni assertEqual () pour affirmer que le résultat est le même que les résultats attendus. Il existe de nombreuses méthodes d'affirmation, qui ne figurent pas ici.

Les résultats des tests:

. « » Dot représente un test en utilisant l'opération;

Avec « F » signifie un défaut d'exécution des cas de test;

Avec « s » représente un essai sautée;

Avec « E » représente un cas de test d'erreur en cours d'exécution;

Test ignorer

Test Ignorer est divisé en inconditionnel et conditionnel Ignoré ignorées. Lorsque vous exécutez le test, et avez parfois besoin de sauter quelques-uns des cas de test, ou ignorer le test lorsque le cas de test de répondre à un certain nombre de critères, ou directement aux cas d'échec du test.

unittest fournit une implémentation de ces exigences décorateur.

Importation unittest
classe la MyTest (de unittest.TestCase):
    @ unittest.skip ( "saut inconditionnel essai décoratif, les besoins de test pour sauter les raisons" )
    DEF test_skip (auto):
        Imprimer ( "Test A" )
    @ unittest.skipIf (3> 2, "lorsque la condition est vraie, le test est la décoration sautée" )
    DEF test_skipIf (auto):
        Imprimer ( "test B" )
    @ unittest.skipUnless (3> 2, « lorsque la condition est vraie, exécution d' un test décoré « )
    DEF test_skip_unless (auto):
        Imprimer ( » test c " )
    # décorateur en aval, que les résultats de l' échec sont marqués comme ayant échoué le test, mais ne jettent pas les informations d'échec
   
@ unittest.expectedFailure
    DEF test_expected_failure ( auto):
        self.assertEqual (2, 3)

Utilisez HTMLTestRunner générer le rapport de test HTML

Après l'achèvement de l'unité de test, le rapport d'essai peut être généré par HTML HTMLTestRunner. Avant d'effectuer les résultats des tests sont à la console, est ni facile à lire, ni attrayante.

Télécharger le fichier HTMLTestRunner.py:

1) Téléchargez le fichier HTMLTestRunner.py: http://tungwaiyip.info/software/HTMLTestRunner.html

2) les fenêtres d'exploitation des fichiers système seront téléchargés dans le python lib chemin du dossier de fichier d'installation;

Ubuntu fichiers du système d'exploitation seront téléchargés dans le fichier dist-packages dossier chemin d'installation de python;

 

MacOSX fichiers du système d'exploitation seront téléchargés dans le-packages site dossier fichier d'installation de python chemin;

Ouvrez un terminal bascule commande à la ligne rouge du dossier de catalogue:

cd /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/

Ensuite, copiez le fichier téléchargé pour HTMLTestRunner.py le dossier en cours:

 

HTMLTestRunner est python2 en raison python2 et 3 font partie des changements de syntaxe, il est donc nécessaire de modifier le fichier téléchargé pour une utilisation dans python3 dans.

Modifiez le fichier HTMLTestRunner.py du fichier:

Ligne 94 sera modifié pour importer io importer StringIO

Ligne 539, le self.outputBuffer = StringIO.StringIO () modifié self.outputBuffer = io.StringIO ()

Les 642 premières lignes seront sinon rmap.has_key (CCRS): modifié si cls pas rmap:

La première ligne 766, le uo = o.decode ( 'latin-1') modifié Uo = e

Ligne 772, l'Ue = e.decode ( 'latin-1') = e modifié ue

第 631 行, 将 print >> sys.stderr, '\ NTIME Elapsed:% s' % (self.stopTime-self.startTime) 修改 成 impression (sys.stderr, '\ NTIME Elapsed:% s' % (auto. stopTime-self.startTime))

3, l'introduction de l'utilisation:

1) 引 包: de l'importation HTMLTestRunner *

2), tel que:

si __name__ == '__main__':
    rapport = REPORT_PATH + '\\ report.html'
    avec ouverture (rapport, 'wb') comme f:
        runner = HTMLTestRunner (f, verbosité = 2, title = 'Test', description = »测试报告')
        runner.run (TestBaidu (' test_search '))

备注:

1) J'ai commencé avec le HTMLTestRunner d'importation, lorsque l'exécution de ce qui précède

2) l'avant - dernière erreur de ligne: TypeError: objet « module » est pas appelable.
Sur deux façons lorsque vous utilisez la différence, le module d'importation: Nom du module pour une utilisation add définie et d'importation HTMLTestRunner * n'a pas besoin d' être ajouté. Peut - être les suivants deux façons:
. 1, à
partir HTMLTestRunner importation *
Runner HTMLTestRunner = (F, la verbosité = 2, title = 'Test', Description = 'rapport d'essai)

2, l'
importation HTMLTestRunner
runner = HTMLTestRunner.HTMLTestRunner (f, verbosité = 2, title = 'Test', description = '测试报告')

Par exemple:

# Présentation du temps d' importation Time, OS # introduit WebDriver bibliothèque de la Sélénium importation WebDriver # introduit unittest Module d' importation unittest # introduit HMTL module de rapport d'essai Importer HTMLTestRunner classe Visit (unittest.TestCase): DEF setUp (auto):         self.driver = webdriver.Chrome () API # code d' appel sera inclus pour "test" processus de démarrage commande DEF test_visit (Self):         self.driver.get ( "http://www.baidu.com" )









   

  
   


        self.driver.find_element_by_id ( "kw" ) .send_keys ( "le Sélénium" )
        self.driver.find_element_by_css_selector ( "INPUT # su.bg.s_btn" ) .cliquez ()
        le time.sleep (2)
        self.assertEqual ( « selenium_ Baidu Recherche " , self.driver.title)

    DEF tearDown (auto):
        self.driver.quit ()

SI __name__ == '__main__' :
    # test suite
   
TestUnit = unittest.TestSuite ()
    # ajouter un test à une suite de tests
   
TestUnit. addTest (Visit ( "test_visit" ))
    # obtenir l'heure actuelle
   
nowtime = de time.strftime ("% D %% m_Low Y_% H:% M:% S" )
    # définissent un chemin de stockage du rapport, et un différents noms distinctifs génèrent plusieurs rapports du temps d' exécution du script
   
REPORT_PATH = '/ utilisateurs / yuandaping / Téléchargements /'
   
Rapport = + REPORT_PATH '/' + + nowtime 'report.html'
   
# définissent rapport d'essai avec (Open rapport, 'WB' ) AS F:         Runner = HTMLTestRunner.HTMLTestRunner (F = Stream, title = ' Baidu rapport de test Recherche ' , description = ' mise en œuvre Exemple utilisé: ' ) # Test de runner.run (TestUnit) # Fermer le fichier de rapport f.close ()
   


       
       

       
       

Après avoir exécuté le script généré des fichiers de rapport: / Users / yuandaping / Téléchargements / 2019_09_23 17: 53: 54report.html

 

Remarque:

Le DDT est un framework de test unitaire conçu pour les bibliothèques d'extension unittest. Il permet l'utilisation de différentes données de test à un essai, et en affichant une pluralité de cas de test.

Installation: installation PIP3 ddt

Python paramétrés est un paramètre de la bibliothèque, tout en soutenant unittest, le nez et pytest cadre de tests unitaires.

Installation: PIP3 install paramétrés

Je suppose que tu aimes

Origine www.cnblogs.com/douyini/p/12650635.html
conseillé
Classement