Maison >base de données >tutoriel mysql >Comment effectuer des tests unitaires automatisés avec Python Unittest

Comment effectuer des tests unitaires automatisés avec Python Unittest

php中世界最好的语言
php中世界最好的语言original
2018-04-09 17:53:443391parcourir

Cette fois, je vais vous présenter Python Comment automatiser les tests unitaires Tests unitaires, quelles sont les Précautions pour que Python Unittest automatise les tests unitaires, les suivantes sont Jetons un coup d'œil à des cas pratiques.

L'exemple de cet article partage le code spécifique du framework de tests unitaires automatisés Python Unittest pour votre référence. Le contenu spécifique est le suivant

1. >Cet article ne couvre que PyUnit)

Adresse de référence

2. Préparation de l'environnement

Assurez-vous d'abord que Python est installé, puis installez PyUnit. La version Python est relativement nouvelle Intégrée à PyUnit (PyUnit fournit une interface de test graphique UnittestGUI.py)

Référence : Afficher l'adresse

Exemples de code

. L'IDE utilisé est PyCharm, La structure DEMO est telle que montrée sur la figure

1 Une instance simple

# Test002_Fail.py
# -*- coding:utf-8 -*-
import unittest
class Test002_Fail(unittest.TestCase):
  #测试用例前执行
  def setUp(self):
    print 'Case Before'
    pass
  #测试用例后执行
  def tearDown(self):
    print 'Case After'
    pass
  #测试用例1
  def test_Case1(self):
    a = 3
    b = 2
    self.assertEqual(a+b,4,'Result Fail')
  #测试用例2
  def test_Case2(self):
    a = 2
    b = 3
    self.assertEqual(a*b,7,'Result Fail')
if name == 'main':
  unittest.main()
2. cas, vous pouvez utiliser Suite pour gérer plusieurs cas, la suite peut être considérée comme un conteneur de cas, qui peut contenir de nombreux cas

# SuiteDemo.py
# -*- coding:utf-8 -*-
#一个类,添加测试集
import unittest
class SuiteDemo(unittest.TestCase):
  #测试用例前执行
  def setUp(self):
    print 'Case Before'
    pass
  #测试用例后执行
  def tearDown(self):
    print 'Case After'
    pass
  def test_Case1(self):
    a = 3
    b = 2
    self.assertEqual(a+b,5,'Result Fail')
    print 'Case1'
  def test_Case2(self):
    a = 2
    b = 3
    self.assertEqual(a*b,6,'Result Fail')
    print 'Case2'
#定义一个测试集合,方便添加Case
def suite():
  suiteTest = unittest.TestSuite()
  suiteTest.addTest(SuiteDemo("test_Case1"))
  suiteTest.addTest(SuiteDemo("test_Case2"))
  return suiteTest
#默认运行时通过 Suite 运行
if name == 'main':
  unittest.main(defaultTest='suite')
3.Suite et Case peuvent être écrits séparément dans différents fichiers Python, ce qui permet de distinguer facilement le module de cas et le module de gestion de la Suite, lors des tests, il vous suffit d'ajouter un cas dans le module de cas, puis de l'ajouter au module Suite

module de cas

# TestCaseDemo
# -*- coding:utf-8 -*-
import unittest
class TestCaseDemo(unittest.TestCase):
  def setUp(self):
    pass
  def tearDown(self):
    pass
  def test_Case1(self):
    print 'test_Case1'
  def test_Case2(self):
    print 'test_Case2'
  def test_Case3(self):
    print 'test_Case3'
  def test_Case4(self):
    print 'test_Case4'
Les suivants sont trois modules Suite, tous importez d'abord le module Case, puis ajoutez Suite, puis ajoutez Case dans Suite Enfin, vous devez utiliser TestRunner lors de l'exécution. Ce TestRunner est équivalent à l'exécuteur de Suite

. TestSuite simplement :

# TestCase_Demo1.py
# -*- coding:utf-8 -*-
#集合写入一个方法,main调用并启动
import unittest
from TestCase_Demo import TestCaseDemo
#添加一个测试集合,并添加Case
def suite():
  suiteTest = unittest.TestSuite()
  suiteTest.addTest(TestCaseDemo('test_Case1'))
  return suiteTest
#指定并启动测试集合,运行集合方法
if name == 'main':
  runner = unittest.TextTestRunner()
  runner.run(suite())
Vous pouvez également ajouter Case directement dans la méthode principale sans définir la méthode Suite, puis exécuter

# TestCase_Demo2.py
# -*- coding:utf-8 -*-
#集合可以写在main
import unittest
from TestCase_Demo import TestCaseDemo
#指定并启动测试集合
if name == 'main':
  #添加测试集合Case,并启动
  suiteTest = unittest.TestSuite()
  suiteTest.addTest(TestCaseDemo('test_Case1'))
  suiteTest.addTest(TestCaseDemo('test_Case2'))
  #直接启动集合
  runner = unittest.TextTestRunner()
  runner.run(suiteTest)
pour ajouter différents Cases à différentes Suites. De même, vous pouvez regrouper Suite

est utilisé pour distinguer différents cas, et les suites peuvent également inclure

# TestCase_Demo3.py
# -*- coding:utf-8 -*-
#包含集合,多集合
import unittest
from TestCase_Demo import TestCaseDemo
#添加不同的合集
def Suite1():
  suiteTest = unittest.TestSuite()
  suiteTest.addTest(TestCaseDemo("test_Case1"))
  suiteTest.addTest(TestCaseDemo("test_Case2"))
  print 'Suite1 运行'
  return suiteTest
def Suite2():
  suiteTest = unittest.TestSuite()
  suiteTest.addTest(TestCaseDemo("test_Case3"))
  suiteTest.addTest(TestCaseDemo("test_Case4"))
  print 'Suite2 运行'
  return suiteTest
#包含所有的Suite
def AllSuite():
  allTest = unittest.TestSuite((Suite1(),Suite2()))
  return allTest
#运行的时候,可以根据不同的要求,运行不同的Suite,或者全部运行,这样就方便管理每次运行的case
if name == 'main':
  runner = unittest.TextTestRunner()
  runner.run(AllSuite())
4 Résumé

PyUnit est un framework de tests unitaires pour Python, et. il est pratique de l'utiliser pour gérer les cas d'exécution automatisés.

En Python, chaque méthode tant que le nom de la méthode commence par test_ est considérée comme un cas d'utilisation et peut être considérée comme un cas. Nous introduisons ici l'utilisation de Suite pour. gérez Case et exécutez-le en groupe. Case, il existe de nombreuses autres fonctions, veuillez vous référer à : unittest — Framework de tests unitaires

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. , veuillez faire attention aux autres articles connexes sur le site Web PHP chinois !

Lecture recommandée :

Explication détaillée des étapes d'utilisation de l'interface de test unittest en python

Comment compter le nombre de lettres apparaissant en Python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn