开发手册 欢迎您!
软件开发者资料库

UnitTest框架 - 跳过测试

UnitTest框架跳过测试 - 从基本概念到高级概念的简单简单步骤学习UnitTest Framework,其中包括概述,框架,API,断言,发现,跳过,例外,时间测试,Unittest2,信号处理,Doctest API,Py.test模块,鼻子测试框架,工具。

自Python 2.7以来,已添加对跳过测试的支持.有条件地和无条件地跳过单独的测试方法或TestCase类是可能的.该框架允许将某个测试标记为"预期失败".此测试将"失败"但不会在TestResult中计为失败.

要无条件地跳过方法,可以使用以下unittest.skip()类方法 :

import unittest   def add(x,y):      return x+yclass SimpleTest(unittest.TestCase):   @unittest.skip("demonstrating skipping")   def testadd1(self):      self.assertEquals(add(4,5),9)if __name__ == '__main__':   unittest.main()

因为skip()是一个class方法,它以@ token为前缀.该方法采用一个参数:描述跳过原因的日志消息.

执行上述脚本时,控制台上显示以下结果 :

C:\Python27>python skiptest.pys----------------------------------------------------------------------Ran 1 test in 0.000sOK (skipped = 1)

角色's'表示已跳过测试.

跳过测试的替代语法是在测试函数中使用实例方法skipTest().

def testadd2(self):   self.skipTest("another method for skipping")   self.assertTrue(add(4 + 5) == 10)

以下装饰器实现测试跳过和预期失败&减去;

S.No.Method&描述
1

unittest.skip(reason)

无条件跳过装饰测试. 理由应该描述为什么跳过测试.

2

unittest.skipIf(condition, reason)

如果条件为真,则跳过装饰测试.

3

unittest.skipUnless(condition, reason)

除非条件为真,否则跳过修饰的测试.

4

unittest.expectedFailure()

将测试标记为预期的失败.如果测试在运行时失败,则测试不会被计为失败.

以下示例演示使用条件跳过和预期失败.

import unittestclass suiteTest(unittest.TestCase):   a = 50   b = 40      def testadd(self):      """Add"""      result = self.a+self.b      self.assertEqual(result,100)   @unittest.skipIf(a>b, "Skip over this routine")   def testsub(self):      """sub"""      result = self.a-self.b      self.assertTrue(result == -10)      @unittest.skipUnless(b == 0, "Skip over this routine")   def testdiv(self):      """div"""      result = self.a/self.b      self.assertTrue(result == 1)   @unittest.expectedFailure   def testmul(self):      """mul"""      result = self.a*self.b      self.assertEqual(result == 0)if __name__ == '__main__':   unittest.main()

在上面的例子中,将跳过testsub()和testdiv().在第一种情况下,a> b为真,而在第二种情况下,b == 0不成立.另一方面,testmul()已标记为预期失败.

运行上述脚本时,两个跳过的测试显示's',预期的失败显示为'x' .

C:\Python27>python skiptest.pyFsxs================================================================FAIL: testadd (__main__.suiteTest)Add----------------------------------------------------------------------Traceback (most recent call last):   File "skiptest.py", line 9, in testadd      self.assertEqual(result,100)AssertionError: 90 != 100----------------------------------------------------------------------Ran 4 tests in 0.000sFAILED (failures = 1, skipped = 2, expected failures = 1)