Python单元测试——使用装饰器实现测试跳过和预期故障

发表于:2017-6-28 10:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:搬砖学徒    来源:51Testing软件测试网采编

  Python单元测试unittest中提供了一下四种装饰器实现测试跳过和预期故障。(使用Python 2.7.13)
  请查考Python手册中:
https://docs.python.org/dev/library/unittest.html
  The following decorators implement test skipping and expected failures:
  #以下装饰器实施测试跳过和预期故障:
  @unittest.skip(原因)
  Unconditionally skip the decorated test. reason should describe why the test is being skipped.
  #无条件跳过装饰测试。 原因应该说明为什么要跳过测试。
  @unittest.skipIf(条件,原因)
  Skip the decorated test if condition is true.
  #如果条件为真,跳过装饰测试。
  @unittest.skipUnless(条件,原因)
  Skip the decorated test unless condition is true.
  # 跳过装饰的测试,除非条件是真的。
  @unittest.expectedFailure
  Mark the test as an expected failure. If the test fails when run, the test is not counted as a failure.
  #将测试标记为预期的失败。 如果测试在运行时失败,则测试不会被视为失败。
  (以上采用谷歌翻译,可能会有差异)
  好了,写段代码看下,test.py ,使用的Eclipse
 #coding:UTF-8
  import unittest
  from test.test_pprint import uni
  class Test_ce(unittest.TestCase):
      a=16
      b=10
      
      @unittest.skip('无条件跳过')
      def test_ce1(self):
          self.assertEqual((self.a-self.b), 16)
          #判断是否相等
          
      @unittest.skipIf(True==1, '条件为真则跳过')
      def test_ce_2(self):
          self.assertFalse(self.a==self.b)
          #判断是否为False
          
      @unittest.skipUnless(1==1, '条件为假则跳过')
      def test_ce_3(self):
          self.assertTrue(self.a>16)
          #判断是否为True
      @unittest.expectedFailure
      def test_ce_4(self):
          self.assertFalse(self.a==16)
          
      @unittest.expectedFailure 
      def test_ce_5(self): 
          self.assertFalse(self.a==15)
          
  if __name__ == '__main__':
      unittest.main()
  好的,运行一下
   1 ssFxu
   2 ======================================================================
   3 FAIL: test_ce_3 (__main__.Test_ce)
   4 ----------------------------------------------------------------------
   5 Traceback (most recent call last):
   6   File "D:\Escplise\workspace\Pytest\src\test001\CE.py", line 20, in test_ce_3
   7     self.assertTrue(self.a>16)
   8 AssertionError: False is not true
   9 
  10 ----------------------------------------------------------------------
  11 Ran 5 tests in 0.000s
  12 
  13 FAILED (failures=1, skipped=2, expected failures=1, unexpected successes=1)
  好的,我们对第1行代码进行分析:
  s:全称是skipped(跳过)
  s:条件为真,所以也是skipped(跳过)
  F:条件为真,所以忽略装饰器,执行断言代码,显然是failures(失败)
  x:断言结果显然是失败的,但是这是在我们意料之中,所以是expected failures(预期的失败)
  u:断言结果显然是pass,但是我们预计可能不通过,所以是unexpected successes(意想不到的成功)
  即第13行代码 所示  FAILED (failures=1, skipped=2, expected failures=1, unexpected successes=1)
   
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号