Python测试用例-unittest-基础
1. 一个简单的测试用例脚本
import unittest
class TestCase(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.abc = 1
print(f"setUpClass: cls.abc={cls.abc}")
def setUp(self) -> None:
print(f"setUp: self.abc={self.abc}")
def tearDown(self) -> None:
print(f"tearDown: self.abc={self.abc}")
def test_task_1(self):
self.abc += 1
print("test_task 1 done !")
def test_task_2(self):
self.abc += 1
print("test_task 2 done !")
@classmethod
def tearDownClass(cls) -> None:
print(f"tearDownClass: cls.abc={cls.abc}")
if __name__ == '__main__':
unittest.main()
运行过程:(根据print看不出先后,可以通过debug打断点全部走一下流程)
setUpClass -> setUp -> test_task_1 -> tearDown -> setUp -> test_task_2 -> tearDown -> tearDownClass
运行结果:
setUpClass: cls.abc=1
setUp: self.abc=1
test_task 1 done !
tearDown: self.abc=2
setUp: self.abc=1
test_task 2 done !
tearDown: self.abc=2
tearDownClass: cls.abc=1
说明:
setUpClass
和tearDownClass
在测试用例类TestCase
开始和结束时候运行一次,按需编码,必须加@classmethod
,作为类方法实现setUp
和tearDown
在测试用例类TestCase
中的每一个测试用例method的开始和结束都会运行一次,以正常的对象方法实现setUpClass
和tearDownClass
中的变量可以传递到用例方法中使用setUp
和tearDown
中的变量一样可以传递到用例方法中使用- 结合3和4,需要注意的是,每次
setUp
都会重置初始化传递的变量值
2. 使用unittest.TestLoader()
方法搜集测试用例并运行
常见用法
使用
unittest.TestLoader()
的多种方法搜集测试用例套件suite,然后unittest.TextTestRunner().run(suite)
# -*- coding:utf-8 -*-
# FileRelativePath: scripts/unit_test/cases/main.py
import unittest
from unit_test.cases.test_demo_1 import SelfTestCase1
from unit_test.cases import test_demo_1
def main():
loader = unittest.TestLoader()
# 通过指定搜索路径和py文件关键字加载到测试套件中
suite = loader.discover(".", "test_*.py")
runner = unittest.TextTestRunner()
runner.run(suite)
if __name__ == '__main__':
main()
测试用例suite
的其他搜集方法
通过类名加载到测试套件中
suite = loader.loadTestsFromTestCase(SelfTestCase1)
通过模块名加载到测试套件中
suite = loader.loadTestsFromModule(test_demo_1)
通过'字符串'加载到测试套件中
name是一个string,格式为"module.class.method"
当module参数存在时:
name可为"class":执行某个类的所有测试方法
name为"class.method":执行某个类的测试方法
当module参数不存在时:
name可为"module.class.method":执行某个测试类的具体测试方法
name可为"module.class":执行某个测试类的所有测试方法
name可为"module":执行某个测试模块的的所有测试类的测试方法
suite = loader.loadTestsFromName("name", module=None)
通过多个'字符串'加载到测试套件中
suite = loader.loadTestsFromNames(["name1", "name2"], module=None)
请相信自己
当我们迷茫,懒惰,退缩的时候 我们会格外的相信命运 相信一切都是命中注定
而当我们努力拼搏,积极向上时 我们会格外的相信自己
所以命运是什么呢? 它是如果你习惯它 那它就会一直左右你
如果你想挣脱它 那它就成为你的阻碍 可如果你打破了它 那它就是你人生的垫脚石!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!