Python单元测试_使用装饰器实现测试跳过和预期故障的方法

作者:jingxian 时间:2022-07-27 17:53:44 

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()

好的,运行一下


ssFxu
======================================================================
FAIL: test_ce_3 (__main__.Test_ce)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\Escplise\workspace\Pytest\src\test001\CE.py", line 20, in test_ce_3
 self.assertTrue(self.a>16)
AssertionError: False is not true

----------------------------------------------------------------------
Ran 5 tests in 0.000s

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)

标签:Python,装饰器,测试跳过,预期故障
0
投稿

猜你喜欢

  • 使用Python完成SAP客户端的打开和系统登陆功能

    2021-02-28 17:12:29
  • Python使用sqlite3第三方库读写SQLite数据库的方法步骤

    2024-01-23 06:31:39
  • ASP.NET将Session保存到数据库中的方法

    2024-01-19 16:31:46
  • Vue中导入excel文件的两种方式及使用步骤

    2024-05-21 10:16:20
  • 将Python中的数据存储到系统本地的简单方法

    2021-08-22 18:15:55
  • 使用JS轻松实现ionic调用键盘搜索功能(超实用)

    2024-04-17 10:26:21
  • Python xpath表达式如何实现数据处理

    2021-09-02 22:07:15
  • golang实现的文件上传下载小工具

    2023-06-28 05:34:34
  • python抓取最新博客内容并生成Rss

    2022-06-18 08:38:40
  • Python如何实现自动发送邮件

    2022-05-09 04:22:55
  • OpenCV立体图像深度图Depth Map基础

    2021-09-23 22:12:59
  • ASP 三层架构 Error处理类

    2011-03-16 11:06:00
  • 使用Python通过win32 COM实现Word文档的写入与保存方法

    2021-03-16 04:09:27
  • vue 项目中当访问路由不存在的时候默认访问404页面操作

    2024-04-30 10:41:49
  • SQL里类似SPLIT的分割字符串函数

    2024-01-23 07:59:57
  • SQL Server 数据文件收缩和查看收缩进度的步骤

    2024-01-12 19:34:03
  • Python自动化操作实现图例绘制

    2021-03-07 11:24:40
  • 优化Oracle停机时间及数据库恢复

    2010-07-20 12:54:00
  • vue 虚拟DOM的原理

    2023-07-02 17:03:18
  • Bootstrap+PHP实现多图上传功能实例详解

    2024-06-05 09:46:11
  • asp之家 网络编程 m.aspxhome.com