当前位置: 首页 > news >正文

python:unittest之跳过测试和预期失败的用例

在利用单元测试框架执行测试用例的过程中,有时只需要执行一部分用例,或者跳过某些暂不需要执行的用例,python的unittest框架就内置这样的功能。

前面的博客介绍了unittest框架的测试用例加载和批量执行的内容,這篇博客,介绍下在unittest框架中,如何跳过预期的测试用例。。。

 

1、unittest.skip()方法

跳过测试和预期失败的功能,是python3.1版本开始,出现的新功能。unittest支持跳过单个测试用例甚至整个测试类。

skip()的各个方法说明如下:

方法说明
@unittest.skip(reason)

无条件跳过被装饰的测试方法;

reason:理由,描述为什么跳过测试用例

@unittest.skipIf(condition,reason)

如果条件为真,则继续执行执行,否则跳过被装饰的测试用例;

reason:理由,描述为什么跳过测试用例

@unittest.skipUnless(condition,reason)除非条件为真,否则跳过被装饰的测试用例;
@unittest.expectedFailure

将测试用例标记为“预期失败”:

如果测试执行时失败,则测试结果不计为失败;

unittest.Skip(reason)

如引发某种定义的异常,则跳过该测试;

一般可以使用TestCase.skip()或者一个跳过装饰器,而不是直接使用

官方文档:https://docs.python.org/3.6/library/unittest.html

 

2、unittest.skip()实例

# coding=utf-8
import unittest
import requests

class DemoTest(unittest.TestCase):
    status = 200
    def setUp(self):
        self.url = 'http://www.cnblogs.com/imyalost/'

    @unittest.skip(u"无条件跳过该测试")
    def test_blog1(self):
        # 无条件跳过
        r1 = requests.get(self.url)

    @unittest.skipIf(status > 200, u"状态码大于200,就跳过该测试")
    def test_blog2(self):
        # 如果断言结果为真,则继续执行,否则跳过测试
        r2 = requests.get(self.url)
        status2 = r2.status_code
        self.assertTrue(status2 > self.status)

    @unittest.skipUnless(status == 404, u"状态码为200,则跳过")
    def test_blog3(self):
        # 除非结果为真,否则跳过该测试
        r3 = requests.get(self.url)
        status3 = r3.status_code
        self.assertTrue(status3 > self.status)

    @unittest.expectedFailure
    def test_blog4(self):
        # 将测试用例标记为“预期失败”,如果测试执行时失败,则测试结果不计为失败
        r4 = requests.get(self.url+'/test4')
        status4 = r4.status_code
        self.assertTrue(status4 ==self.status)

    def tearDown(self):
        pass

if __name__ == '__main__':
    unittest.main()

代码简析

利用requests库的方法,访问我的博客首页,并且断言get请求的返回状态码,判断是否满足被装饰器修饰的条件,最终执行结果如下:

 

以上就是unittest框架中关于跳过测试和预期失败的方法示例,仅供参考,具体实践请在实战中自行进行。。。

 

相关文章:

  • [转载] 以下划线开头的变量
  • Hibernate SQL优化小技巧使用dynamic-insert=true insert=true
  • mui页面传值
  • js中for循环的研究
  • HDU 3709 Balanced Number(数位DP)题解
  • 【笔记】最长递增子序列 Longest increasing subsequence(LIS)
  • c# 修改xml格式config文件
  • 【知识碎片】第三方登录弹窗效果
  • VMware虚拟机中为Linux 添加虚拟硬盘(VirtualBox方法类似)
  • Robot Framwork 问题小记
  • 给MySQL增加一个表示例
  • 复变函数:复函数的空间与Montel定理
  • sed使用命令记录
  • db2模式
  • 配置企业库5.0管理
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • k个最大的数及变种小结
  • Linux快速复制或删除大量小文件
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • mysql外键的使用
  • Rancher-k8s加速安装文档
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Tornado学习笔记(1)
  • Vue 动态创建 component
  • Webpack 4x 之路 ( 四 )
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 力扣(LeetCode)56
  • 利用DataURL技术在网页上显示图片
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 深入 Nginx 之配置篇
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​VRRP 虚拟路由冗余协议(华为)
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ###C语言程序设计-----C语言学习(3)#
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (黑马C++)L06 重载与继承
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (论文阅读30/100)Convolutional Pose Machines
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (新)网络工程师考点串讲与真题详解
  • (转)负载均衡,回话保持,cookie
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Core 项目指定SDK版本
  • .Net Remoting常用部署结构
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .Net 知识杂记
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .net和php怎么连接,php和apache之间如何连接