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-8import unittestfrom test.test_pprint import uniclass 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)

转载于:https://www.cnblogs.com/yin-tao/p/7086581.html

Python单元测试--使用装饰器实现测试跳过和预期故障相关推荐

  1. python中的装饰器decorator

    python中的装饰器 装饰器是为了解决以下描述的问题而产生的方法 我们在已有的函数代码的基础上,想要动态的为这个函数增加功能而又不改变原函数的代码 例如有三个函数: def f1(x):return ...

  2. python高级-闭包-装饰器

    闭包内容: 匿名函数:能够完成简单的功能,传递这个函数的引用,只有功能 普通函数:能够完成复杂的功能,传递这个函数的引用,只有功能 闭包:能够完成较为复杂的功能,传递这个闭包中的函数以及数据,因此传递 ...

  3. Python学习之==装饰器

    在Python中,装饰器和迭代器.生成器都是非常重要的高级函数. 在讲装饰器之前,我们先要学习以下三个内容: 一.函数的作用域 1.作用域介绍 Python中的作用域分为四种情况: L:local,局 ...

  4. python中tracer函数意思_浅析Python编写函数装饰器

    本节主要介绍编写函数装饰器的相关内容. 跟踪调用 如下代码定义并应用一个函数装饰器,来统计对装饰的函数的调用次数,并且针对每一次调用打印跟踪信息. 这是一个通过类装饰的语法写成的装饰器,测试如下: 运 ...

  5. [转载]理解PYTHON中的装饰器

    [翻译]理解PYTHON中的装饰器 来源stackoverflow上的问题 链接 python的函数是对象 要理解装饰器,首先,你必须明白,在python中,函数是对象. 这很重要. 简单例子来理解为 ...

  6. 为什么说想到Python中的装饰器是天才

    为什么说想到Python中的装饰器是天才 只需一个@符号就能分析.测试和重复使用你的代码 带着魔杖的仙女在Python代码中飞舞 软件中有没有什么是神奇的小魔法? 有,装饰器却非常接近! 如果说有一件 ...

  7. python装饰器原理-python 中的装饰器及其原理

    装饰器模式 此前的文章中我们介绍过装饰器模式: 装饰器模式中具体的 Decorator 实现类通过将对组建的请求转发给被装饰的对象,并在转发前后执行一些额外的动作来修改原有的部分行为,实现增强 Com ...

  8. python装饰器类-PYTHON里的装饰器能装饰类吗

    扩展回答 如何理解python里的装饰器 通常可以理解它是一个hook 的回调函数. 或者是理解成python 留给二次开发的一个内置API. 一般是用回调和hook 方式实现的. 如何理解Pytho ...

  9. python类装饰器详解-python 中的装饰器详解

    装饰器 闭包 闭包简单的来说就是一个函数,在该函数内部再定义一个函数,并且这个内部函数用到了外部变量(即是外部函数的参数),最终这个函数返回内部函数的引用,这就是闭包. def decorator(p ...

最新文章

  1. python 常用内置函数_Python小白必备的8个最常用的内置函数(推荐)
  2. python编写程序模拟硬币的投掷、假设0表示硬币的反面_修改了Python中的硬币投掷程序,无法完成循环...
  3. xlwt+xlrd配合使用修改excel表格
  4. ROS笔记(11) Qt工具箱
  5. 2016年1月20日总结
  6. 体检结果(2018年10月,胃肠镜)
  7. java web 导出excel_javaweb导出excel表格
  8. Makefile常用模板
  9. win10虚拟机下载安装流程
  10. mysql 易语言 邮件_易语言实现163邮箱登录获取邮件列表等操作的代码
  11. 获取今天是星期几的四种写法
  12. Unity CommandBuffer实现毛玻璃特效
  13. mysql配置和优化
  14. 初识BashBunny
  15. vmware缩写涵义
  16. SAP 如何把科目快速扩充到所有公司
  17. ArcGIS10.2打开ArcToolbox闪退解决方法
  18. 抖音怎么引流卖童装?淘宝童装卖家利用抖音引流
  19. 2021年中国纱线行业产量、进出口及经营规模情况分析[图]
  20. android 获取微信计步数量,微信运动步数是怎样计算的?终于有人研究出来了!

热门文章

  1. ggtree实现系统发育树可视化
  2. C++的this指针和引用符号的搭配使用理解
  3. 1 编码_TMS320F28379D之CLB解码多摩川编码器1——入手小知识(原创)
  4. like mysql 相反_mysql真的不能做搜索引擎吗?
  5. fibonacci数列前20项_等差数列、等比数列、调和数列等几种常见数列的总结
  6. yolov3模型识别不出训练图片_YOLOv3训练自己的模型
  7. 彩色MT9V034摄像头 Bayer转rgb FPGA实现(转载)
  8. linux动态链接库的使用,Linux动态库soname的使用
  9. 另一个小程序 返回的支付结果如何得到_手把手教你测微信小程序
  10. python中.whl文件下载,pandas