回覆列表
  • 1 # 使用者4163059234182

    1)doctest

    使用doctest是一種類似於命令列嘗試的方式,用法很簡單,如下

    複製程式碼程式碼如下:

    def f(n):

    """

    >>> f(1)

    1

    >>> f(2)

    2

    """

    print(n)

    if __name__ == "__main__":

    import doctest

    doctest.testmod()

    應該來說是足夠簡單了,另外還有一種方式doctest.testfile(filename),就是把命令列的方式放在檔案裡進行測試。

    2)unittest

    unittest歷史悠久,最早可以追溯到上世紀七八十年代了,C++,Java裡也都有類似的實現,Python裡的實現很簡單。

    unittest在python裡主要的實現方式是TestCase,TestSuite。用法還是例子起步。

    複製程式碼程式碼如下:

    from widget import Widget

    import unittest

    # 執行測試的類

    class WidgetTestCase(unittest.TestCase):

    def setUp(self):

    self.widget = Widget()

    def tearDown(self):

    self.widget.dispose()

    self.widget = None

    def testSize(self):

    self.assertEqual(self.widget.getSize(), (40, 40))

    def testResize(self):

    self.widget.resize(100, 100)

    self.assertEqual(self.widget.getSize(), (100, 100))

    # 測試

    if __name__ == "__main__":

    # 構造測試集

    suite = unittest.TestSuite()

    suite.addTest(WidgetTestCase("testSize"))

    suite.addTest(WidgetTestCase("testResize"))

    # 執行測試

    runner = unittest.TextTestRunner()

    runner.run(suite)

    簡單的說,1>構造TestCase(測試用例),其中的setup和teardown負責預處理和善後工作。2>構造測試集,新增用例3>執行測試需要說明的是測試方法,在Python中有N多測試函式,主要的有:

    TestCase.assert_(expr[, msg])

    TestCase.failUnless(expr[, msg])

    TestCase.assertTrue(expr[, msg])

    TestCase.assertEqual(first, second[, msg])

    TestCase.failUnlessEqual(first, second[, msg])

    TestCase.assertNotEqual(first, second[, msg])

    TestCase.failIfEqual(first, second[, msg])

    TestCase.assertAlmostEqual(first, second[, places[, msg]])

    TestCase.failUnlessAlmostEqual(first, second[, places[, msg]])

    TestCase.assertNotAlmostEqual(first, second[, places[, msg]])

    TestCase.failIfAlmostEqual(first, second[, places[, msg]])

    TestCase.assertRaises(exception, callable, ...)

    TestCase.failUnlessRaises(exception, callable, ...)

    TestCase.failIf(expr[, msg])

    TestCase.assertFalse(expr[, msg])

    TestCase.fail([msg])

  • 中秋節和大豐收的關聯?
  • 補貨作業流程是什麼?