文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>python中的测试

python中的测试

时间:2006-06-18  来源:pipehappy

python中的单元测试模块(unittest)使用的方法是类似于JUnit的标准方法。一般一个测试代码在一个单独的模块中。   ######################### 测试代码在一个单独模块中的原因:(zzLibrary reference) 1。可以独立运行。 2。可以和产品代码相分离。 3。测试代码较之代码不易改变。 4。测试代码可以较容易的改变。 5。C模块的测试代码必然是在一个不同的模块中的。 6。如果测试策略变化了,代码不必要改变。   ######################### 其中重要的感念有: test fixture:是测试的环境,使用方法setUp()和tearDown()来体现。他们分别包含测试开始和结束时要执行的动作。   test case:是测试的最小单位,用来测试对应一定的输入是否可以得到期望的输出。可以基于TestCase或是FunctionTestCase。也可以自己写一个。其中重要的比较结果的函数是assertEqual()(用来比较结果相同)、assert_()(用来确定条件是否符合)、assertRaise()(用来确定是否有期望的异常发生)
test suite:test case或test suite的集合。

test runner:提供测试的启动和结果的输出,unittest提供TextTestRunner。
  整个测试框架的过程是这样设计的。首先定义一个TestResult类,这个类的主要作用是保存测试中的结果。然后通过testLoader来得到从一些testCase或是testSuite来得到最终的testSuite。然后定义一个runner用来使用run()方法,在这个方法中给作为参数的测试实例一个TestResult实例(或是子类的实例),将这个实例作为调用testSuite的run()方法的参数。这样当方法返回的时候,结构就已经在testResult中了,最后在runner中解释这些结果。   ########################### 如何进行测试: 在继承TestCase之后,中间的runTest()方法就是要执行的测试。例如: import unittest   class GameTest(unittest.TestCase):     def runTest(self):         self.assertEqual(1,1) 因为一个类中只能有一个runTest(),所以如果有很多的测试实例,则多次的生成实例是不现实的。   一个解决的方法是在从TestCase继承得到的类中使用test开头的方法名来表示这个方法是需要被运行的测试。 class GameTest(unittest.TestCase):     def testGame1(self):         self.assertEqual(1,1)     def testGame2(self): .... 这样在一个类中间就有多个测试了。   多个TestCase在一起或是TestSuite在一起,就组成了TestSuite。有多种的用法。相关的方法有: unittest.TestSuite()这是初始化一个TestSuite suite.addTest()这是向一个TestSuite添加一个TestCase unittest.makeSuite()这是直接从一个TestCase的类生成一个TestSuite。   当TestCase或是TestSuite都准备好的时候,可以使用多种方法运行测试。 1。 if __name__ == '__main__':     unittest.main() 2。 unittest.TextTestRunner().run(suite)   ###################### 这里看看TestCase类中有些什么设施。其中的设施有三类,一类是测试设施,一类是条件检测,一类是有关测试信息的方法。 1。测试设施: setUp(),tearDown(),run(),debug() 2。条件测试: def fail(self, msg=None):失败
def failIf(self, expr, msg=None):如果真则失败
def failUnless(self, expr, msg=None):如果假则失败
def failUnlessRaises(self, excClass, callableObj, *args, **kwargs):
def failUnlessEqual(self, first, second, msg=None):
def failIfEqual(self, first, second, msg=None):
def failUnlessAlmostEqual(self, first, second, places=7, msg=None):
def failIfAlmostEqual(self, first, second, places=7, msg=None):
assertEqual = assertEquals = failUnlessEqual
assertNotEqual = assertNotEquals = failIfEqual
assertAlmostEqual = assertAlmostEquals = failUnlessAlmostEqual
assertNotAlmostEqual = assertNotAlmostEquals = failIfAlmostEqual
assertRaises = failUnlessRaises
assert_ = assertTrue = failUnless
assertFalse = failIf
3。相关信息: id()包括模块名和类名的字符串 countTestCases()返回1 defaultTestResult()返回一个result类 shortDescription()        
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载