前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python unittest之加载及跳过测试方法和示例

python unittest之加载及跳过测试方法和示例

作者头像
苦叶子
发布2018-04-04 16:17:57
1.4K0
发布2018-04-04 16:17:57
举报
文章被收录于专栏:开源优测开源优测
前言

在python unittest框架中,内置了用例加载及跳过的标准函数。

其加载用例通过TestLoader类实现,而跳过测试方法则通过unittest.skip()类实现。下面我们一起来学习下。

TestLoader加载用例

TestLoader类有一个discover()函数,简洁的实现了从指定顶层目录、模块等加载测试用例。

将下述代码保存至test_disvover.py中

代码语言:javascript
复制
# _*_ coding:utf-8 _*_
__author__ = '苦叶子'
import unittest
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

# 被测函数
def add(a, b):
    return a + b  
  # 测试用例
class demoTest(unittest.TestCase):
    
    def test_add_4_5(self):
        print u"测试 discover 命令"
        self.assertEquals(add(4,5),9)

切换至test_disvover.py所在目录,在命令行中执行一下命令:

代码语言:javascript
复制
python -m unittest discover

执行结果如下:

通过该命令,unittest测试框架会尝试在当前目录及其子目录加载所有满足要求的测试(注意:所有的用例模块应该以test开头进行命名,默认加载test开头的模块)

下面我们一起看下其他相关的命令

序号

命令选项

描述

1

-v, --verbose

详细输出

2

-s, --start-directory

启动目录(默认为当前目录)

3

-p, --pattern

匹配加载的测试文件(默认匹配test*.py)

4

-t, --top-level-directory

顶层目录(默认同--start-directory)

例如我们指定C:\test下,匹配assert开头的所有测试模块

代码语言:javascript
复制
python -m unittest -v -s "c:\\test" -p "assert*.py"

这个命令将加载C:\test目录下所有assert开头的测试模块中的测试方法

unittest.skip跳过测试方法

python unittest测试框架从python2.7开始支持设置跳过指定的测试方法或是跳过满足某种条件的测试用例。

下面我看一个强制跳过指定的测试用例的示例:

代码语言:javascript
复制
# _*_ coding:utf-8 _*_

__author__ = '苦叶子'
import unittest
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

# 被测函数
def add(a, b):
    return a + b

class demoSkipTest(unittest.TestCase):
    @unittest.skip(u"强制跳过示例")
    def test_add(self):
        self.assertEqual(add(4,5), 9)  
      
    def test_add_2(self):
        self.skipTest("强制跳过示例2")
        self.assertEqual(add(4,5), 9)
      
if __name__ == '__main__':
    unittest.main()

将上述代码保存至demoskip.py,运行下述命令:

代码语言:javascript
复制
python demoskip.py

结果如下:

下面我们一起看下各种skip方法说明

序号

方法

说明

1

unittest.skip(reason)

强制跳转。reason是跳转原因

2

unittest.skipIf(condition, reason)

条件跳转,如果condition是True则跳转

3

unittest.skipUnless(condition, reason)

除非conditioin为True,才进行调整

4

unittest.expectedFailure()

标记该测试预期为失败 ,如果该测试方法运行失败,则该测试不算做失败

下面我们一起看下各种方式实践的示例

代码语言:javascript
复制
# _*_ coding:utf-8 _*_
__author__ = '苦叶子'
import unittest
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

class demoSkipTest(unittest.TestCase):
    a = 50
    b = 20
    
    def test_add(self):
        """加法"""
        result = self.a + self.b
        self.assertEqual(result, 40)   
     @unittest.skipIf(a>b, u"a>b就跳过")    
    def test_sub(self):
        """减法"""
        result = self.a - self.b
        self.assertTrue(result == -30)    
         @unittest.skipUnless(b==0, u"除数为0,则跳转")
    def test_div(self):
        """除法"""
        result = self.a / self.b
        self.assertTrue(result == 1)     
            @unittest.expectedFailure
    def test_mul(self):
        """乘法"""
        result = self.a * self.b
        self.assertTrue(result == 0)      
          if __name__ == "__main__":
    unittest.main()

将上述代码保存至demo_skip_test.py,运行结果如下

总结

本次就用例加载及如何跳过某些测试方法或用例进行了分享,大家可以基于上述示例代码进行改造学习和实践。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源优测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TestLoader加载用例
  • unittest.skip跳过测试方法
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档