当前位置: 首页 > news >正文

【测试】Unittest

近期更新完毕,建议关注收藏!

目录

  • 简介
  • TestCase
  • TestSuite
  • TestRunner
  • TestLoader
  • Fixture

tips:ctrl+? 可以看方法的help文档

简介

python自带的单元测试框架,也可以做自动化测试
组织多个用例去执行,用例都是用单独的目录存放的
丰富断言方法
可生成测试报告
核心要素为下方5个标题

TestCase

测试用例,用来书写用例代码
可以执行单个测试用例

  • 命名要满足规则
    不能出现中文
    test_项目_模块_功能.py
  • 当文件中先进行其他python操作时很可能不能识别成测试文件,解决方法如下
    在这里插入图片描述
    在这里插入图片描述
  • 终端信息
    在这里插入图片描述
    一个点代表一个用例通过,上述4个.表示4个用例通过
import unittest# 定义测试类 继承unittest.TestCase类
class TestDemo(unittest.TestCase):#测试方法的命名必须以test开头def test_method1(self):passdef test_method2(self):pass#执行 1.在类名或方法名后面右键运行 右键后的按钮出现unittest....就是识别到了
#如果没有识别到,检查命名、新建一个文件重试或采用第二点执行方法
# 2.在主程序中使用unittest.main()执行
if __name__=='__main__':unittest.main()

TestSuite

测试套件,用来打包TestCase

import unittest
#允许导入测试用例文件
from testcase1 import TestDemo1#实例化套件对象 
suite=unittest.TestSuite()
#添加用例方法
suite.addTest(ClassName("MethodName"))
#批量添加测试方法 套件对象.addTest(unittest.makeSuite(测试类名))
suite.addTest(unittest.makeSuite(TestDemo1))
#添加扩展
suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase(ClassName))#把指定的类中测试用例全部添加到测试套件中

TestRunner

测试执行,运行TestSuite

import unittest
from testcase1 import TestDemo1
from testcase2 import TestDemo2
suite=unittest.TestSuite()
suite.addTest(TestDemo1("test_method1"))
suite.addTest(TestDemo1("test_method2"))
suite.addTest(TestDemo2("test_method1"))
suite.addTest(TestDemo2("test_method2"))
#批量添加
suite.addTest(unittest.makeSuite(TestDemo1))
suite.addTest(unittest.makeSuite(TestDemo2))#实例化执行对象 unittest.TextTestRunner()
runner=unittest.TextTestRunner()
#执行套件对象: 执行对象.run(套件对象)
runner.run(suite)

TestLoader

测试加载,对测试套件功能的补充
作用和TestSuite一样,组装用例代码,也需要TextTestRunner()执行

  • 为什么还需要这个?很多Suite写法在多个用例的情况下过于复杂, TestLoader进行简化,管理多个Test Case
#实例化加载对象并加载用例,得到套件对象
#suite=unittest.TestLoader().discover('用例所在目录','用例代码文件名.py')
suite=unittest.TestLoader().discover('.','test02*.py')#实例化执行对象并执行
runner=unittest.TextTestRunner().run(suite)

Fixture

测试夹具,一种代码结构,书写前置方法(执行用例之前)和后置方法(用例之后);由此可得执行顺序为前置->用例->后置;省略了重复步骤的代码。

分为 方法级别、类级别、模块级别
方法级别在每个用例执行前后都会自动调用,方法名固定
类级别在类汇总所有测试方法执行前后自动调用,一个类别只执行一次
模块级别就是代码文件级别,整个代码文件执行前后执行一次

可以不成对出现

def setUp(self): #前置#每个用例执行前都会调用pass
def tearDown(self):#后置#每个用例执行后都会调用pass#类级别需要转换成类方法
@classmethod
def setUpClass(cls): #前置pass
@classmethod
def tearDownClass(cls):#后置pass#模块文件级别
#类外部定义
def setUpModule(): #前置pass
def tearDownModule():#后置pass
  • 如果打印中显示先做了类级别的前置和后置,然后再做了其他,实际上运行还是按正常顺序的,正常情况。
http://www.lryc.cn/news/507845.html

相关文章:

  • java 根据路径下载文件转换为MultipartFile,并且上传到服务器
  • Onvif服务端开发
  • 【jvm】主要参数
  • 【优选算法】—移动零(双指针算法)
  • PostgreSQL标识符长度限制不能超过63字节
  • 嵌入式硬件面试题
  • 深度解析 OneCode 混合编译:创新驱动的开发变革
  • [文献阅读] Unsupervised Deep Embedding for Clustering Analysis (无监督的深度嵌入式聚类)
  • ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。
  • 网络七层杀伤链
  • GAN网络详解及涨点大全总结(源码)
  • 【自动化】Python SeleniumUtil 工具 开启开发者模式 自动安装油猴用户脚本等
  • 【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
  • android:sharedUserId 应用进程声明介绍
  • 解锁ApplicationContext vs BeanFactory: 谁更具选择性?
  • 一篇梳理清楚http请求知识点
  • Kotlin - 协程结构化并发Structured Concurrency
  • 新版国标GB28181设备端Android版EasyGBD支持国标GB28181-2022,支持语音对讲,支持位置上报,开源在Github
  • 豆包MarsCode测评:编程效率再提升
  • 二叉树 -- 堆(详解)
  • 【Apache Paimon】-- 11 -- Flink 消费 kakfa 写 S3 File
  • SQL MID()
  • jsp | servlet | spring forEach读取不了对象List
  • 【ArcGIS Pro微课1000例】0063:处理无人机数据(空三、生成DOM、DSM、DTM)
  • 【pytorch】深度学习计算
  • 详解磁盘IO、网络IO、零拷贝IO、BIO、NIO、AIO、IO多路复用(select、poll、epoll)
  • VPN技术-GRE隧道的配置
  • 【spring-cloud-gateway总结】
  • 数组相关简单算法
  • 在VBA中结合正则表达式和查找功能给文档添加交叉连接