±à¼ÍƼö: |
±¾ÎÄÀ´×Ô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¸ñʽµÄ±¨¸æÁË£¬¶øÇÒ»¹×Ô¶¯°ÑÈÕÆÚ¼ÓÉÏÁË

|