引言
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.1.1 使用`unittest.skip(reason)`](#1.1.1 使用
- [1.2 题目](#1.2 题目)
- [1.3 代码](#1.3 代码)
- [1.4 代码解释](#1.4 代码解释)
- 二、思考
一、跳过
1.1 概念
在python的
unittest
框架中,有时候你可能希望跳过某些测试用例,而不必删除它们。这可以是因为某些测试暂时无法通过,或者是因为它们依赖于外部资源(如网络连接或数据库),而在某些环境中不想执行这些测试
unittest
提供了一些机制来跳过测试用例,包括:
- 使用装饰器
unittest.skip(reason)
- 使用装饰器
unittest.skipIf(condition, reason)
- 使用
setUp
方法中的异常
1.1.1 使用unittest.skip(reason)
这个装饰器允许为测试方法提供一个固定的跳过理由。无论什么情况下,该测试用例都会被跳过
1.1.2 使用unittest.skipIf(condition, reason)
这个装饰器允许根据一个条件来决定是否跳过测试用例。如果condition
为True
,则跳过测试用例,并提供一个跳过的理由
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.TestCase
。unittest.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_skip
和test_skip2
都被装饰器跳过,所以只有test_skip3
会被执行
二、思考
- 直接将测试函数标记成跳过
@unittest.skip('跳过的原因') - 根据条件判断测试函数是否跳过,判断条件成立,跳过
@unittest.skipIf(判断条件,'跳过原因')