码迷,mamicode.com
首页 > 其他好文 > 详细

unittest---unittest跳过用例

时间:2019-12-02 19:32:21      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:使用   地方   com   reason   turn   cto   rgs   --   开始   

  我们在做自动化测试的时候,可能会遇到一些用例中间不用回归,想要进行跳过。直接注释的话,代码量修改过大,显然这个方法不妥,哪还有什么方法?unittest这个自动化框架可以帮助我们完成这个操作

自动跳过用例

unittest中提供了一些跳过用例的装饰器方法。我们可以通过这些装饰器来帮我们完成这些操作

@unittest.skip()

表示:无条件跳过用例

def skip(reason):
    """
   无条件地跳过用例
    """
    def decorator(test_item):
        if not isinstance(test_item, type):
            @functools.wraps(test_item)
            def skip_wrapper(*args, **kwargs):
                raise SkipTest(reason)
            test_item = skip_wrapper

        test_item.__unittest_skip__ = True
        test_item.__unittest_skip_why__ = reason
        return test_item
    return decorator

@unittest.skipIf()

表示:如果条件为真,则跳过测试。

def skipIf(condition, reason):
    """
    如果条件为真,则跳过测试。
    """
    if condition:
        return skip(reason)
    return _id

@unittest.skipUnless()

表示:除非条件为真,否则跳过测试。

def skipUnless(condition, reason):
    """
   除非条件为真,否则跳过测试。
    """
    if not condition:
        return skip(reason)
    return _id

 

小试牛刀

闲话少说直接开始实战,这里我们一样使用接口完成我们的测试,当然接口文档,还是我们的查询歌曲接口(简单,免费,还好用)

# coding:utf-8
import unittest
import requests

class   Music(unittest.TestCase):

    def select(self,name):
        url = https://api.apiopen.top/searchMusic
        data = {
             "name":name
        }
        r = requests.post(url,data=data)
        b = r.json()[result][0][title]
        return b

    @unittest.skip("强制性跳过")
    def test01(self):
        b = 断桥残雪
        a = self.select(b)
        self.assertEqual(b,a)
        print("用例1跳过")

    @unittest.skipIf(True ,条件为真的时候跳过)
    def test02(self):
        a = 说好不哭
        b = self.select(a)
        self.assertEqual(a,b)
        print("用例2跳过")

    @unittest.skipUnless(False ,条件为假的时候跳过)
    def test03(self):
        a = 芒种
        c = 抖音
        b = self.select(a)
        try:
            self.assertIn(c,b,msg=\n抖音不存在芒种歌曲信息中)
        except Exception as msg:
            print(错误信息%s%msg)
        print("用例3跳过")

    def test04(self):
        a = 像鱼
        b = self.select(a)
        self.assertEqual(a,b)
        print("用例4不跳过")

if __name__ == __main__:
    unittest.main(verbosity=2)

通过代码可以发现我们对用例123进行了跳过,但是每个跳过的条件不同,执行后发现只有用例4没有跳过,当然我们代码中也是只有对用例4没有跳过。

也可以从执行结果中看到我们一共跳过了3条用例,以及每条都是怎么样进行跳过的

技术图片

有小伙伴们要问了,这个只是跳过单个用例,那么我想跳过一个class中的所有用例呢?这还不简单?直接把装饰器放在class上面不就可以了。

# coding:utf-8
import unittest
import requests

@unittest.skip(强制性跳过)
class   Music(unittest.TestCase):

    def select(self,name):
        url = https://api.apiopen.top/searchMusic
        data = {
             "name":name
        }
        r = requests.post(url,data=data)
        b = r.json()[result][0][title]
        return b

    def test01(self):
        b = 断桥残雪
        a = self.select(b)
        self.assertEqual(b,a)
        print("用例1跳过")

    def test02(self):
        a = 说好不哭
        b = self.select(a)
        self.assertEqual(a,b)
        print("用例2跳过")

    def test03(self):
        a = 芒种
        c = 抖音
        b = self.select(a)
        try:
            self.assertIn(c,b,msg=\n抖音不存在芒种歌曲信息中)
        except Exception as msg:
            print(错误信息%s%msg)
        print("用例3跳过")

    def test04(self):
        a = 像鱼
        b = self.select(a)
        self.assertEqual(a,b)
        print("用例4不跳过")

if __name__ == __main__:  
    unittest.main(verbosity=2)

通过执行结果发现已经把class中的四条用例全部都跳过了。

技术图片

 

 

 

安静写的文章如果对您有帮助的话,可以点个关注,如果哪里有写错或者不懂的地方可以下方留言,看到后第一时间进行回复!

 

 

unittest---unittest跳过用例

标签:使用   地方   com   reason   turn   cto   rgs   --   开始   

原文地址:https://www.cnblogs.com/qican/p/11868674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!