Python单元测试中的skip与skipif:跳过测试用例详解

在编写单元测试时,有时我们需要跳过某些测试用例。例如,当某些条件不满足时,或者某些功能尚未实现时,跳过测试可以避免不必要的失败。Python的unittest模块提供了skipskipif装饰器,用于灵活地跳过测试用例。本文将详细介绍skipskipif的使用方法,并通过示例帮助你掌握它们的应用场景。

1. 为什么需要跳过测试用例?

在以下场景中,跳过测试用例是非常有用的:

  1. 功能未实现:某些功能尚未开发完成,但测试用例已经写好。

  2. 环境限制:某些测试只能在特定环境下运行(例如需要特定的操作系统或依赖库)。

  3. 已知问题:某些测试用例已知会失败,但暂时无法修复。

  4. 条件测试:某些测试只有在特定条件下才需要运行。

通过跳过这些测试用例,可以确保测试报告更加清晰,同时避免不必要的失败。

2. skip装饰器

skip装饰器用于无条件跳过某个测试用例。无论条件如何,被skip装饰的测试用例都不会执行。

import unittest
class TS(unittest.TestCase):
    def setUp(self) -> None:
        print("开始")
    def tearDown(self) -> None:
        print("结束")
    def testd(self):
        print("testd")
        self.assertEqual(1,1)
    @unittest.skip("功能未实现,占时跳过")
    def testa(self):
        print("testa")
        self.assertEqual(1, 1)
    def testcdh(self):
        print("testcdh")
        self.assertEqual(1, 1)

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

 

2.2 运行结果

运行上述代码后,输出如下:

  • s 表示跳过的测试用例。

  • 测试报告会显示跳过的原因(例如“功能尚未实现”)。

3. skipif装饰器

skipif装饰器用于根据条件跳过测试用例。只有当条件为True时,测试用例才会被跳过。

3.1 使用方法

import unittest
class TS(unittest.TestCase):
    def setUp(self) -> None:
        print("开始")
    def tearDown(self) -> None:
        print("结束")
    def testd(self):
        print("testd")
        self.assertEqual(1,1)
    @unittest.skip("功能未实现,占时跳过")
    def testa(self):
        print("testa")
        self.assertEqual(1,1)
    @unittest.skipIf(condition=[1,2],reason="存在bug")  #逻辑/关系运算的结果、非0、非空
    def testcdh(self):
        print("testcdh")
        self.assertEqual(1,1)

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

3.2 运行结果

  • 如果在Windows平台上运行,输出如下:

 

4. 总结

  • skip:用于无条件跳过测试用例。

  • skipif:用于根据条件跳过测试用例。

  • 通过合理使用skipskipif,可以避免不必要的测试失败,同时保持测试报告的清晰性。

猜你喜欢

转载自blog.csdn.net/m0_66197486/article/details/146268504
今日推荐