Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Pythonµ¥Ôª²âÊÔunittest
 
  2545  次浏览      27
 2019-3-18 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×Ôcnblogs£¬±¾ÎĽéÉÜÁËPythonÖÐ×Ô´øµÄµ¥Ôª²âÊÔ¿ò¼ÜÊÇunittestÄ£¿éµÄÏà¹ØÄÚÈÝ¡£

PythonÖÐÓÐÒ»¸ö×Ô´øµÄµ¥Ôª²âÊÔ¿ò¼ÜÊÇunittestÄ£¿é£¬ÓÃËüÀ´×öµ¥Ôª²âÊÔ£¬ËüÀïÃæ·â×°ºÃÁËһЩУÑé·µ»ØµÄ½á¹û·½·¨ºÍһЩÓÃÀýÖ´ÐÐǰµÄ³õʼ»¯²Ù×÷¡£

ÔÚ˵unittest֮ǰ£¬ÏÈ˵¼¸¸ö¸ÅÄ

TestCase Ò²¾ÍÊDzâÊÔÓÃÀý

TestSuite ¶à¸ö²âÊÔÓÃÀý¼¯ºÏÔÚÒ»Æð£¬¾ÍÊÇTestSuite

TestLoaderÊÇÓÃÀ´¼ÓÔØTestCaseµ½TestSuiteÖеÄ

TestRunnerÊÇÀ´Ö´ÐвâÊÔÓÃÀýµÄ,²âÊԵĽá¹û»á±£´æµ½TestResultʵÀýÖУ¬°üÀ¨ÔËÐÐÁ˶àÉÙ²âÊÔÓÃÀý£¬³É¹¦Á˶àÉÙ£¬Ê§°ÜÁ˶àÉÙµÈÐÅÏ¢

ÏÂÃæÐ´Ò»¸ö¼òµ¥µÄµ¥Ôª²âÊÔÓÃÀý

import unittest
class MyTest(unittest.TestCase): # ¼Ì³Ðunittest.TestCase
def tearDown(self):
# ÿ¸ö²âÊÔÓÃÀýÖ´ÐÐÖ®ºó×ö²Ù×÷
print('111')

def setUp(self):
# ÿ¸ö²âÊÔÓÃÀýÖ´ÐÐ֮ǰ×ö²Ù×÷
print('22222')

@classmethod
def tearDownClass(self):
# ±ØÐëʹÓà @ classmethod×°ÊÎÆ÷, ËùÓÐtestÔËÐÐÍêºóÔËÐÐÒ»´Î
print('4444444')
@classmethod
def setUpClass(self):
# ±ØÐëʹÓÃ@classmethod ×°ÊÎÆ÷,ËùÓÐtestÔËÐÐǰÔËÐÐÒ»´Î
print('33333')

def test_a_run(self):
self.assertEqual(1, 1) # ²âÊÔÓÃÀý

def test_b_run(self):
self.assertEqual(2, 2) # ²âÊÔÓÃÀý

if __name__ == '__main__':
unittest.main()#ÔËÐÐËùÓеIJâÊÔÓÃÀý

ÏÂÃæÊÇһЩ³£ÓõĶÏÑÔ£¬Ò²¾ÍÊÇУÑé½á¹û

assertEqual(a, b) a == b
assertNotEqual(a, b) a != b
assertTrue(x) bool(x) is True
assertFalse(x) bool(x) is False
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b) a in b
assertNotIn(a, b) a not in b

ÄÇÈçºÎÉú³ÉÒ»¸ö²âÊÔ±¨¸æÄØ£¬ÐèÒª¼ÓÈëÁíÍâÒ»¸öÄ£¿éÁË£¬HTMLTestRunner£¬Õâ¸öÄ£¿éÐèÒª×Ô¼º°²×°£¬Ê¹ÓÃÖ´ÐвâÊÔÓÃÀý¾Í»áÉú³ÉÒ»¸öhtmlµÄ²âÊÔ±¨¸æ£¬ÀïÃæ»áÓÐÿ¸ö²âÊÔÓÃÀýµÄÖ´Ðнá¹û£¬´úÂëÈçÏ£º

import HTMLTestRunner
import unittest
class MyTest(unittest.TestCase):#¼Ì³Ðunittest.TestCase
def tearDown(self):
#ÿ¸ö²âÊÔÓÃÀýÖ´ÐÐÖ®ºó×ö²Ù×÷
print('111')
def setUp(self):
#ÿ¸ö²âÊÔÓÃÀýÖ´ÐÐ֮ǰ×ö²Ù×÷
print(22222)
def test_run(self):
# self.assertEqual(1,1)
self.assertIs(1,1)
#²âÊÔÓÃÀý
def test_run2(self):
# self.assertEqual(1,1)
self.assertIs(1,1)
#²âÊÔÓÃÀý
def test_run3(self):
# self.assertEqual(1,1)
self.assertIs(1,1)
#²âÊÔÓÃÀý
def test_run1(self):
# self.assertEqual(1,1)
self.assertIs(1,1)
#²âÊÔÓÃÀý
if __name__ == '__main__':
test_suite = unittest.TestSuite()#´´½¨Ò»¸ö²âÊÔ¼¯ºÏ
test_suite.addTest(MyTest('test_run1'))#²âÊÔÌ×¼þÖÐÌí¼Ó²âÊÔÓÃÀý
#test_suite.addTest(unittest.makeSuite(MyTest))#ʹÓÃmakeSuite·½·¨Ìí¼ÓËùÓеIJâÊÔ·½·¨
fp = open('res.html','wb')#´ò¿ªÒ»¸ö±£´æ½á¹ûµÄhtmlÎļþ
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='api²âÊÔ±¨¸æ',description='²âÊÔÇé¿ö')
#Éú³ÉÖ´ÐÐÓÃÀýµÄ¶ÔÏó
runner.run(test_suite)
#Ö´ÐвâÊÔÌ×¼þ

Èç¹ûÎÒÃÇÓкܶà¸öÄ£¿é£¬Ã¿¸öÄ£¿éÏÂÃæ¶¼Ð´Á˺ܶàpythonÎļþ£¬Ã¿¸öpythonÎļþÀïÃæ¶¼ÓвâÊÔÓÃÀý£¬ÄÇÔõô°ÑÕâ¸öĿ¼ÏµÄÓÃÀý¶¼Ö´ÐÐÁËÄØ£¬¾ÍÒªÏÈÕÒµ½Õâ¸öĿ¼ÏµÄËùÓÐpythonÎļþ£¬È»ºóÕÒµ½ÀïÃæµÄ²âÊÔÓÃÀý£¬Öð¸öÖ´ÐУ¬´úÂëÈçÏ£º

import unittest,HTMLTestRunner
suite = unittest.TestSuite()#´´½¨²âÊÔÌ×¼þ
all_cases = unittest.defaultTestLoader.discover('.','test_*.py')
#ÕÒµ½Ä³¸öĿ¼ÏÂËùÓеÄÒÔtest¿ªÍ·µÄPythonÎļþÀïÃæµÄ²âÊÔÓÃÀý
for case in all_cases:
suite.addTests(case)#°ÑËùÓеIJâÊÔÓÃÀýÌí¼Ó½øÀ´
fp = open('res.html','wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
title='all_tests',description='ËùÓвâÊÔÇé¿ö')
runner.run(suite)
#ÔËÐвâÊÔ

ÎÒÃÇÔÚºóÐø½øÐгÖÐø¼¯³ÉµÄʱºò£¬ÒªÈôúÂë×Ô¶¯ÔËÐУ¬¾Í»áÓõ½JenkinsÁË£¬µ«ÊÇÉÏÃæ²úÉúµÄ²âÊÔ±¨¸æ¶¼ÊÇhtml¸ñʽµÄ£¬Jenkins²»ÈÏʶ£¬¾ÍÔÚJenkinsÀïÃæÏÔʾ²»³öÀ´¡£ÄÇÔÛÃǾÍÒª²úÉúһЩJenkinsÈÏʶµÄ²âÊÔ±¨¸æ£¬JenkinsÈÏʶxml¸ñʽµÄ±¨¸æ£¬ÄÇÔÛÃǾͲúÉúxml¸ñʽµÄߣ¬¾ÍÐèÒªÓÃÒ»¸öеÄÄ£¿é£¬xmlrunner£¬°²×°Ö±½Ó pip install xmlrunner¼´¿É£¬´úÂëÈçÏ£º

import unittest
import xmlrunner
#µ¼ÈëÕâ¸öÄ£¿é
class My(unittest.TestCase):

def test1(self,a,b,c):
self.assertEqual(a+b,c)

if __name__=='__main__':
test_suite = unittest.TestSuite()
test_suite.addTest(unittest.makeSuite(My))
runner = xmlrunner.XMLTestRunner(output='report')#Ö¸¶¨±¨¸æ·ÅµÄĿ¼
runner.run(test_suite)

È»ºóÔÛÃÇÔËÐУ¬¿ÉÒÔ¿´µ½ÔÚreportĿ¼ÏÂÒѾ­²úÉúÁËxml¸ñʽµÄ±¨¸æÁË£¬¶øÇÒ»¹×Ô¶¯°ÑÈÕÆÚ¼ÓÉÏÁË

   
2545 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù