unittest篇5-用例的跳过skip

1、前言

上一篇博客,我们介绍了测试脚手架,也就是当我们在实际的测试中, 我们可能有些参数或者有些用例case只需要执行一次,那么我们也只能在用例执行一次,不然重复执行,会导致数据覆盖等情况。我们可以采取测试脚手架来完成对应的操作。

今天这篇博客我们来介绍一下,用例的跳过。

2、跳过

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

2.1 unittest.skip(reason)

1、含义:表示无条件的跳过装饰的测试,需要说明跳过测试的原因
2、运用:

import unittest
class TestCaseDemo(unittest.TestCase):

    @unittest.skip('直接跳过')
    def testassertdemo(self):
        self.assertNotEqual(1, 1)

    def testassertdemo_1(self):
        self.assertListEqual([1, 2], [1, 2])

    def testassertdemo_2(self):
        self.assertNotRegex("1", "122")  # 正则是否匹配

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

3、结果:

第一条testassertdemo的case,里面的断言是不符合预期的,预期用例会报错,但是由于skip直接跳过了,所以运行结果都是通过了。
unittest篇5-用例的跳过skip_第1张图片

2.2 unittest.skipIf(condition,reason)

1、含义:如果条件为真,那么跳过的测试
2、运用:

import unittest
class TestCaseDemo(unittest.TestCase):

    @unittest.skipIf(3>2,'前面条件为真时,跳过此用例')
    def testassertdemo(self):
        self.assertNotEqual(1, 1)

    def testassertdemo_1(self):
        self.assertListEqual([1, 2], [1, 2])

    def testassertdemo_2(self):
        self.assertNotRegex("1", "122")  # 正则是否匹配

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

3、结果:
第一条case,前面的条件成立,同样跳过此用例
unittest篇5-用例的跳过skip_第2张图片

2.3 unittest.skipUnless(condition,reason)

1、含义:当条件为真时,需要执行的测试
2、运用:

import unittest
class TestCaseDemo(unittest.TestCase):

    @unittest.skipUnless(3>2,'前面条件为真时,需要执行此用例')
    def testassertdemo(self):
        self.assertNotEqual(1, 1)

    def testassertdemo_1(self):
        self.assertListEqual([1, 2], [1, 2])

    def testassertdemo_2(self):
        self.assertNotRegex("1", "122")  # 正则是否匹配

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

3、结果:
第一条用例,条件成立,执行该用例,所以报错了
unittest篇5-用例的跳过skip_第3张图片

2.4 unittest.expectedFailure()

1、含义:不管执行结果是否失败,都将测试标记为失败
2、运用:

import unittest
class TestCaseDemo(unittest.TestCase):

    @unittest.expectedFailure
    def testassertdemo(self):
        self.assertNotEqual(1, 2)

    def testassertdemo_1(self):
        self.assertListEqual([1, 2], [1, 2])

    def testassertdemo_2(self):
        self.assertNotRegex("1", "122")  # 正则是否匹配

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

3、结果:
无论执行结果是否失败,都将用例标记为失败,但不会抛出失败信息.
在这里插入图片描述

你可能感兴趣的:(unittest,unittest)