(四十二)Unittest单元测试框架之关于unittest还需要知道的-跳过测试和预期失败

随笔记录方便自己和同路人查阅。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。

#------------------------------------------------我是可耻的分割线-------------------------------------------

在运行测试时,有时需要直接跳过某些测试用例,或者当用例符合某个条件时跳过测试,又或者直接将测试用例设置为失败。unittest提供了实现这些需求的装饰器。

unittest.skip(reason)  无条件地跳过装饰的测试,说明跳过测试的原因。

unittest.skipIf(condition,reason)  跳过转世的测试,如果条件为真时。

unittest.skipUnless(condition,reason)  跳过转世的测试,出发条件为真。

unittest.expectedFailure()  测试标记为失败。不管执行结果是否失败,统一标记为失败。

新建test.py

import unittest

class MyTest(unittest.TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    @unittest.skip("直接跳过测试")
    def test_skip(self):
        print('test aaa')

    @unittest.skipIf(3 > 2,"当条件为True时跳过")
    def test_skip_if(self):
        print('test bbb')

    @unittest.skipUnless(3 > 2, "当条件为True时执行测试")
    def test_skip_Unless(self):
        print('test ccc')

    @unittest.expectedFailure
    def test_expected_failure(self):
        self.assertEqual(2,3)

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

运行结果:

 

 

上例中共创建了4条测试用例。第一条测试用例通过@unittest.skip()装饰,直接跳过不执行。第二条用例通过@unittest.skipIf()装饰,当条件为真时不执行,3>2条件为真(True),跳过不执行。第三条用例@unittest.skipUnless()装饰,当条件为真时执行,判断3 > 2条件为真(True),第三条用例执行。第四条用例通过 @unittest.expectedFailure装饰,不管执行结果是否失败,同意标记为失败,但不会抛出错误信息。

当然,这些方法同样可以作用域测试类,只需将它们定义在测试类上面即可。

@unittest.skip("直接跳过测试")
class MyTest(unittest.TestCase):
    def setUp(self):
        pass
posted @ 2019-12-13 15:12  李荣洋  阅读(329)  评论(0编辑  收藏  举报