unittest简单应用
时间:2022-07-28
本文章向大家介绍unittest简单应用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
unittest框架是一个python自带的测试框架,主要包含以下部分:
- test fixture 用来进行准备工作及结束后的清理工作
- test case 测试用例部分,必须是以 test_ 开头
- test suit 测试套件,用来进行组合测试用例
- test runner 用来执行测试套件组合的用例
test fixture初始化方法的执行顺序
# 导入unittest
import unittest
# 创建测试类
import unittest
# 创建测试类
class MyTestCase(unittest.TestCase): # 继承TestCase类
def setUp(self):
print("测试准备")
def tearDown(self):
print("测试结束")
@classmethod # 定义setUpClass和tearDownClass方法必须在前面添加@classmethod装饰器
def setUpClass(cls):
print("测试类准备")
@classmethod
def tearDownClass(cls):
print("测试类结束")
# 以上为test fixture 部分
def test_something1(self):
print("test1")
def test_something2(self):
print("test2")
# 以上为test case部分(case的命名必须以 test_ 开头)
if __name__ == '__main__':
unittest.main()
执行结果:
Testing started at 14:09 ...
"D:Program Files (x86)Python37-32python.exe" "D:Program FilesJetBrainsPyCharm 2019.2.1helperspycharm_jb_unittest_runner.py" --path E:/test/demo/demo2.py
Launching unittests with arguments python -m unittest E:/test/demo/demo2.py in E:testdemo
测试类准备
测试准备
test1
测试结束
测试准备
test2
测试结束
测试类结束
Ran 2 tests in 0.005s
OK
Process finished with exit code 0
以上代码可以看到setUpclass在类方法被调用前首先执行,且只执行一次;tearDownClass最后执行,也执行一次;setUp在每个case执行前执行,tearDown在每个case执行后执行
多个测试case可以用test suit测试套件来组织用例
import unittest
from demo import demo3
from demo import demo4
#构造测试集
suite = unittest.TestSuite()
suite.addTest(demo3.MyTest1('test_something1'))
suite.addTest(demo4.MyTest2('test_something2'))
if __name__=='__main__':
#test runner执行测试
runner = unittest.TextTestRunner()
runner.run(suite)
注:要在demo包下创建demo3.py和demo4.py,在两个py里创建两个测试类MyTest1和MyTest2,分别封装两个测试方法test_something1和test_something2
执行结果:
..
----------------------------------------------------------------------
Ran 2 tests in 19.320s
OK
Process finished with exit code 0
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- socket接口层分析
- 数据存储方式——JSON、CSV、MongoDB、Redis、MySQL
- Spring Boot引入swagger-ui 后swagger-ui.html无法访问404
- 多路复用IO内幕
- Linux信号处理
- Shopify主题title/description等SEO设置
- Golang实现守护进程
- LaTeX简单常用方法笔记
- Convolution_model_Application_v1a
- Windows平台快速安装MongoDB和Robo 3T
- Linux内存管理 - slab分配器
- akka-grpc - 基于akka-http和akka-streams的scala gRPC开发工具
- Redis Sentinel原理与实现 (中)
- Keras_Tutorial_v2a
- 根据字符串生成对应Hash值