python中如何进行测试

来源:互联网 发布:c语言产生10个随机数 编辑:程序博客网 时间:2024/05/17 01:58
使用python进行测试也足够简明了

1)doctest
使用doctest是一种类似于命令行尝试的方式,用法很简单,如下

  1. def f(n):
  2. """
  3. >>> f(1)
  4. 1
  5. >>> f(2)
  6. 2
  7. """
  8.     print(n)    
  9. if __name__ == '__main__':
  10.     import doctest
  11.     doctest.testmod()


应该来说是足够简单了,另外还有一种方式doctest.testfile(filename),就是把命令行的方式放在文件里进行测试。

2)unittest
unittest历史悠久,最早可以追溯到上世纪七八十年代了,C++,Java里也都有类似的实现,Python里的实现很简单。
unittest在python里主要的实现方式是TestCase,TestSuite。用法还是例子起步。

  1. from widget import Widget
  2. import unittest
  3. # 执行测试的类
  4. class WidgetTestCase(unittest.TestCase):
  5.     def setUp(self):
  6.         self.widget = Widget()
  7.     def tearDown(self):
  8.         self.widget.dispose()
  9.         self.widget = None
  10.     def testSize(self):
  11.         self.assertEqual(self.widget.getSize(), (4040))
  12.     def testResize(self):
  13.         self.widget.resize(100100)        
  14.         self.assertEqual(self.widget.getSize(), (100100))        
  15. # 测试
  16. if __name__ == "__main__":
  17.     # 构造测试集
  18.     suite = unittest.TestSuite()
  19.     suite.addTest(WidgetTestCase("testSize"))
  20.     suite.addTest(WidgetTestCase("testResize"))
  21.     
  22.     # 执行测试
  23.     runner = unittest.TextTestRunner()
  24.     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]) 

原创粉丝点击