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框架中关于跳过测试和预期失败的方法示例,仅供参考,具体实践请在实战中自行进行。。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在编写测试用例时,有时候我们会遇到一些无法执行的情况,比如某些测试用例需要依赖于外部环境或者数据,而这些依赖项可能并不是每次都可用。这时候,我们可以使用 `@unittest.skip(reason)` 或 `@unittest.skipIf(condition, reason)` 或 `@unittest.skipUnless(condition, reason)` 装饰器来跳过这些测试用例。 - `@unittest.skip(reason)`:无条件跳过测试用例; - `@unittest.skipIf(condition, reason)`:当 `condition` 为 `True` 时跳过测试用例; - `@unittest.skipUnless(condition, reason)`:当 `condition` 为 `False` 时跳过测试用例。 其中,`reason` 参数是可选的,表示跳过测试用例的原因,会在测试报告中显示。下面是一个示例: ```python import unittest class MyTestCase(unittest.TestCase): def test_something(self): # 这个测试用例会被跳过,原因是不依赖于某些必要的外部条件 self.skipTest("Not implemented yet") @unittest.skip("demonstrating skipping") def test_nothing(self): # 这个测试用例会被无条件跳过 self.fail("shouldn't happen") @unittest.skipIf(True, "skipping due to condition") def test_skip_if(self): # 当条件为 True 时,这个测试用例会被跳过 self.assertEqual(1 + 1, 3) @unittest.skipUnless(False, "skipping unless condition is False") def test_skip_unless(self): # 当条件为 False 时,这个测试用例会被跳过 self.assertEqual(2 * 2, 5) ``` 在上面的例子中,`test_something` 测试用例使用了 `self.skipTest` 方法来无条件跳过测试用例;`test_nothing` 测试用例使用了 `@unittest.skip` 装饰器来无条件跳过测试用例;`test_skip_if` 测试用例使用了 `@unittest.skipIf` 装饰器,当条件为 `True` 时跳过测试用例;`test_skip_unless` 测试用例使用了 `@unittest.skipUnless` 装饰器,当条件为 `False` 时跳过测试用例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值