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

发布时间 - 2026-01-11 02:05:45    点击率:

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单元测试_使用装饰器实现测试跳过和预期故障的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# Python  # 装饰器  # python单元测试unittest实例详解  # Python单元测试框架unittest使用方法讲解  # 在Python中进行自动化单元测试的教程  # 在Python的Flask框架中实现单元测试的教程  # Python之PyUnit单元测试实例  # 对Python的Django框架中的项目进行单元测试的方法  # Python中unittest模块做UT(单元测试)使用实例  # 在Python编程过程中用单元测试法调试代码的介绍  # 详解Python nose单元测试框架的安装与使用  # 深入理解Python单元测试unittest的使用示例  # Python Unittest自动化单元测试框架详解  # Python单元测试实例详解  # 跳过  # 判断是否  # 给大家  # 这是  # 单元测试  # 会有  # 好了  # 希望能  # 所示  # 这篇  # 四种  # 意料之中  # 进行分析  # 小编  # 意想不到  # 大家多多  # 不通过  # 被视为  # skipIf  # skipped 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信小程序 wx.uploadFile无法上传解决办法  Laravel如何使用查询构建器?(Query Builder高级用法)  如何用花生壳三步快速搭建专属网站?  如何在建站之星网店版论坛获取技术支持?  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何用5美元大硬盘VPS安全高效搭建个人网站?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  MySQL查询结果复制到新表的方法(更新、插入)  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  详解Oracle修改字段类型方法总结  香港服务器如何优化才能显著提升网站加载速度?  如何构建满足综合性能需求的优质建站方案?  php打包exe后无法访问网络共享_共享权限设置方法【教程】  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Linux系统命令中screen命令详解  制作企业网站建设方案,怎样建设一个公司网站?  Linux系统命令中tree命令详解  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  网站建设整体流程解析,建站其实很容易!  网站制作企业,网站的banner和导航栏是指什么?  在centOS 7安装mysql 5.7的详细教程  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  装修招标网站设计制作流程,装修招标流程?  Swift开发中switch语句值绑定模式  如何在阿里云服务器自主搭建网站?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  香港服务器部署网站为何提示未备案?  如何在阿里云通过域名搭建网站?  Swift中switch语句区间和元组模式匹配  Laravel如何生成API文档?(Swagger/OpenAPI教程)  canvas 画布在主流浏览器中的尺寸限制详细介绍  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何挑选最适合建站的高性能VPS主机?  Laravel如何实现一对一模型关联?(Eloquent示例)  C语言设计一个闪闪的圣诞树  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Laravel Docker环境搭建教程_Laravel Sail使用指南  什么是javascript作用域_全局和局部作用域有什么区别?  如何在阿里云购买域名并搭建网站?  Laravel Fortify是什么,和Jetstream有什么关系  Laravel怎么为数据库表字段添加索引以优化查询