【python实操】python小程序之跳过

引言

python小程序之跳过

文章目录

  • 引言
  • 一、跳过
    • [1.1 概念](#1.1 概念)
      • [1.1.1 使用`unittest.skip(reason)`](#1.1.1 使用unittest.skip(reason))
      • [1.1.2 使用`unittest.skipIf(condition, reason)`](#1.1.2 使用unittest.skipIf(condition, reason))
      • [1.1.3 使用`setUp`方法中的异常](#1.1.3 使用setUp方法中的异常)
    • [1.2 题目](#1.2 题目)
    • [1.3 代码](#1.3 代码)
    • [1.4 代码解释](#1.4 代码解释)
  • 二、思考

一、跳过

1.1 概念

在python的unittest框架中,有时候你可能希望跳过某些测试用例,而不必删除它们。这可以是因为某些测试暂时无法通过,或者是因为它们依赖于外部资源(如网络连接或数据库),而在某些环境中不想执行这些测试

unittest提供了一些机制来跳过测试用例,包括:

  1. 使用装饰器unittest.skip(reason)
  2. 使用装饰器unittest.skipIf(condition, reason)
  3. 使用setUp方法中的异常

1.1.1 使用unittest.skip(reason)

这个装饰器允许为测试方法提供一个固定的跳过理由。无论什么情况下,该测试用例都会被跳过

1.1.2 使用unittest.skipIf(condition, reason)

这个装饰器允许根据一个条件来决定是否跳过测试用例。如果conditionTrue,则跳过测试用例,并提供一个跳过的理由

1.1.3 使用setUp方法中的异常

如果在测试的setUp方法中抛出了异常,那么相应的测试用例也会被跳过。这种方式适用于那些在设置测试环境时就发现问题的情况

1.2 题目

如何使用跳过

1.3 代码

python 复制代码
import unittest

x = 3


class TestSkip(unittest.TestCase):
    @unittest.skip('直接跳过')
    def test_skip(self):
        print('就是直接跳过')

    @unittest.skipIf(x == 3, '说跳就跳')
    def test_skip2(self):
        print('skip2')

    def test_skip3(self):
        print('skip3')

输出结果:

1.4 代码解释

python 复制代码
import unittest
  • 这行代码导入了python标准库中的unittest模块,该模块提供了编写和运行测试的框架
python 复制代码
x = 3
  • 这行代码定义了一个全局变量x,并将其赋值为整数3
python 复制代码
class TestSkip(unittest.TestCase):
  • 这行代码定义了一个名为TestSkip的类,它继承自unittest.TestCaseunittest.TestCase是所有单元测试用例的基类
python 复制代码
    @unittest.skip('直接跳过')
  • 这行代码使用unittest模块的skip装饰器来装饰下面的测试方法。装饰器会使得被装饰的测试方法在测试运行时被跳过,并且会在报告中显示消息'直接跳过'
python 复制代码
    def test_skip(self):
  • 这行代码定义了一个名为test_skip的方法。按照unittest的约定,所有以test开头的方法都会被视为测试用例
python 复制代码
        print('就是直接跳过')
  • 这行代码是test_skip方法体的一部分,它将在方法被调用时执行,但由于@unittest.skip装饰器的存在,实际上这个方法不会被调用
python 复制代码
    @unittest.skipIf(x == 3, '说跳就跳')
  • 这行代码使用unittest模块的skipIf装饰器来装饰下面的测试方法。如果条件x == 3为真(在我们的例子中确实为真),则test_skip2方法将被跳过,并且会在报告中显示消息'说跳就跳'
python 复制代码
    def test_skip2(self):
  • 这行代码定义了另一个名为test_skip2的测试方法
python 复制代码
        print('skip2')
  • 这行代码是test_skip2方法体的一部分,它将在方法被调用时执行,但由于@unittest.skipIf装饰器的存在,实际上这个方法不会被调用
python 复制代码
    def test_skip3(self):
  • 这行代码定义了第三个测试方法test_skip3
python 复制代码
        print('skip3')
  • 这行代码是test_skip3方法体的一部分,它将在方法被调用时执行。因为这个方法没有被任何装饰器跳过,所以它会被正常执行,并且会在控制台打印出字符串'skip3'
python 复制代码
if __name__ == '__main__':
  • 这行代码是一个常见的Python idiom,用于检查当前脚本是否作为主程序运行。如果当前脚本是直接运行的(而不是作为模块导入其他脚本),那么__name__变量将被设置为'__main__'
python 复制代码
    unittest.main()
  • 这行代码调用了unittest模块的main函数,它会自动发现并运行TestSkip类中以test开头的方法。由于test_skiptest_skip2都被装饰器跳过,所以只有test_skip3会被执行

二、思考

  • 直接将测试函数标记成跳过
    @unittest.skip('跳过的原因')
  • 根据条件判断测试函数是否跳过,判断条件成立,跳过
    @unittest.skipIf(判断条件,'跳过原因')
相关推荐
阿猿收手吧!4 分钟前
【C语言】localtime和localtime_r;strftime和strftime_l
linux·c语言·开发语言
苏打水com4 分钟前
0基础学前端:100天拿offer实战课(第3天)—— CSS基础美化:给网页“精装修”的5大核心技巧
人工智能·python·tensorflow
不染尘.5 分钟前
2025_11_5_刷题
开发语言·c++·vscode·算法·贪心算法·动态规划
不穿格子的程序员6 分钟前
从零开始刷算法-栈-字符串解码
java·开发语言
你不是我我10 分钟前
【Java 开发日记】设计模式了解吗,知道什么是饿汉式和懒汉式吗?
android·java·开发语言
2501_9291775813 分钟前
C++中的虚基类
开发语言·c++·算法
顾安r33 分钟前
11.5 脚本 本地网站收藏(解封归来)
linux·服务器·c语言·python·bash
chenbin___36 分钟前
Omit<>的用法
开发语言·前端·javascript
Blossom.11840 分钟前
把AI“贴”进路灯柱:1KB决策树让老旧路灯自己报「灯头松动」
java·人工智能·python·深度学习·算法·决策树·机器学习
QT 小鲜肉1 小时前
【QT/C++】Qt网络编程进阶:TCP网络编程的基本原理和实际应用(超详细)
c语言·开发语言·网络·c++·qt·学习·tcp/ip