Comment exécuter des tests avec Python unittest

introduction

J'ai expliqué comment utiliser unittest dans Exécuter unittest en Python (pour les débutants). En l'utilisant, je voulais tester plusieurs tests à la fois et les organiser. En d'autres termes, comment utiliser TestSuite. Documentation officielle et "[[Python] Deux façons d'implémenter une suite de tests avec le module unittest](http: //www.yoheim. net / blog.php? q = 20160903) ”a été utilisé comme référence.

Structure du répertoire

.
├─sample_a.py
└─tests
  ├─__init__.py
  ├─test_samplea.py
  ├─test_sampleb.py
  ├─samplec.py
  └─sample_suite.py

Source de l'échantillon

sample_a.py


class SampleA():
  def hello(self):
    print('Hello, I am sample of a!')

test_samplea.py


import unittest

from sample_a import SampleA


class TestSampleA(unittest.TestCase):
  def test_a1(self):
    print('Test sample A1')
    a = SampleA()
    a.hello()

  def test_a2(self):
    print('Test sample A2')

  def a3(self):
    print('Test sample A3')

test_sampleb.py


import unittest


class TestSampleB(unittest.TestCase):
  def test_b1(self):
    print('Test sample B1')

  def test_b2(self):
    print('Test sample B2')

  def b3(self):
    print('Test sample B3')

samplec.py


import unittest


class SampleC(unittest.TestCase):
  def test_c1(self):
    print('Test sample C1')

  def test_c2(self):
    print('Test sample C2')

  def c3(self):
    print('Test sample C3')

sample_suite.py


import unittest

from . import test_samplea
from . import test_sampleb
from . import samplec


def suite():
  suite = unittest.TestSuite()
  suite.addTest(test_samplea.TestSampleA('test_a1'))
  suite.addTest(test_samplea.TestSampleA('a3'))
  suite.addTest(unittest.makeSuite(test_sampleb.TestSampleB))
  suite.addTest(samplec.SampleC('test_c1'))
  return suite


if __name__ == '__main__':
  runner = unittest.TextTestRunner()
  test_suite = suite()
  runner.run(test_suite)

Exécutez un test

python -m unittest tests.test_samplea Le résultat de l'exécution est le suivant.

Test sample A1
Hello, I am sample of a!
.Test sample A2
.
----------------------------------------------------------------------
Ran 2 tests in 0.003s

OK

À partir de la sortie, vous pouvez voir que les méthodes de test test_a1 et test_a2 sont en cours d'exécution. Aucun test n'a été effectué sur la méthode a3.

Exécutez des tests ensemble

python -m unittest Le résultat de l'exécution est le suivant.

Test sample A1
Hello, I am sample of a!
.Test sample A2
.Test sample B1
.Test sample B2
.
----------------------------------------------------------------------
Ran 4 tests in 0.006s

OK

À partir des résultats des tests, vous pouvez voir que les tests pour test_samplea.py et test_sampleb.py sont en cours d'exécution. Le test de samplec.py n'a pas été exécuté. Dans le fichier commençant par test, les tests des méthodes commençant par test sont exécutés ensemble.

Exécutez uniquement vos propres tests

python -m tests.sample_suite

Test sample A1
Hello, I am sample of a!
.Test sample A3
.Test sample B1
.Test sample B2
.Test sample C1
.
----------------------------------------------------------------------
Ran 5 tests in 0.006s

OK

Le test ajouté par addTest est en cours d'exécution. Les méthodes de test (a3) qui ne commencent pas par des fichiers de test et de test (samplec.py) qui ne commencent pas par test sont également exécutées. Comment ajouter un test consiste à ajouter chaque méthode suite.addTest(test_samplea.TestSampleA('test_a1')) Ou Ajout par classe suite.addTest(unittest.makeSuite(test_sampleb.TestSampleB)) il y a.

Résumé

La méthode de découverte de test est très pratique car vous pouvez exécuter le test sans rien définir. Cependant, au fur et à mesure que le nombre de tests augmente et que des tests qui prennent beaucoup de temps à traiter sont ajoutés, je souhaite exclure les tests, j'ai donc étudié comment exécuter uniquement les tests que j'ai décidés. Je n'ai pas pu faire d'essais et d'erreurs et j'ai pensé qu'il pourrait être implémenté un peu plus simple et exécuté avec le test unitaire python -m. Pas bon car l'interface à exécuter est incohérente. .. .. Veuillez me faire savoir s'il existe un moyen plus simple de le mettre en œuvre.

Recommended Posts

Comment exécuter des tests avec Python unittest
Comment exécuter setUp une seule fois dans Python Unittest
Comment utiliser BigQuery en Python
[REAPER] Comment jouer à Reascript avec Python
Convertissez des PDF en images en masse avec Python
Comment utiliser tkinter avec python dans pyenv
Comment exécuter LeapMotion avec Python non-Apple
Comment exécuter Notepad ++ Python
Comment développer en Python
Comment convertir / restaurer une chaîne avec [] en python
Comment faire un calcul de hachage avec Salt en Python
Expliquez en détail comment créer un son avec python
Comment exécuter python dans l'espace virtuel (pour MacOS)
[Python] Comment faire PCA avec Python
Python: comment utiliser async avec
Comment collecter des images en Python
Comment démarrer avec Python
Comment tuer des processus en vrac
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Comment calculer la date avec python
Comment exécuter du code TensorFlow 1.0 en 2.0
Comment gérer le japonais avec Python
Comment tester cette exception est déclenchée dans python unittest
[Road to Intermediate Python] Installer des packages en masse avec pip
[TensorFlow 2 / Keras] Comment exécuter l'apprentissage avec CTC Loss dans Keras
Comment extraire n'importe quel rendez-vous dans Google Agenda avec Python
Comment exécuter une application construite avec Python + py2app construite avec Anaconda
Comment se connecter à AtCoder avec Python et soumettre automatiquement
Comment gérer l'erreur d'installation de python dans pyenv (BUILD FAILED)
[Introduction à Python] Comment utiliser la classe en Python?
Essayez de vous connecter à qiita avec Python
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
Unittest en Python
[Itertools.permutations] Comment créer une séquence en Python
Pour utiliser python, mettez pyenv sur macOS avec PyCall
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python
Comment extraire une zone de polygone en Python
Comment faire un test de sac avec python
Comment vérifier la version d'opencv avec python
Comment afficher le japonais python avec lolipop
[Python2.7] Résumé de l'utilisation d'unittest
Comment changer de version de Python dans cloud9
Comment régler le contraste de l'image en Python
Comment utiliser __slots__ dans la classe Python
Comment remplir dynamiquement des zéros avec Python
Comment entrer le japonais avec les malédictions Python
Pour faire fonctionner la station d'horodatage en Python
Comment utiliser les expressions régulières en Python
Comment afficher Hello World en python
Comment utiliser is et == en Python