pythonUnitTest框架
UnitTest框架
UnitTest参考文章:https://blog.csdn.net/qq_54219272/article/details/123265794
-
目标(看完UnitTest框架该有的收获)
- 掌握UnitTest框架的基本使用方法
- 掌握断言(判断实际结果和预期结果是否一致)的使用方法
- 掌握如何实现参数化(用例代码写一份,传入不同的数据即可)
- 掌握测试报告的生成
-
UnitTest的介绍
-
框架(framework):解决一类事情的功能集合(UnitTest解决单元测试)很多功能实现的半成品
-
需要按照规定书写代码
-
UnitTest是python自带的单元测试框架,用来做单元测试,只要安装python就可以使用。第三方框架(pytest)
-
对于测试人员来讲是自动化脚本的执行框架(管理运行多个测试用例)
-
-
框架特点:
- 组织多个用例的执行
- 提供丰富的断言方法(代替人工判断预期结果和实际结果是否一致)
-
核心要素(组成,5部分)
-
testCase(测试用例最核心的模块,是unitest的组成部分,不是手工和自动化中的用例(Test Case)
-
功能:每个testCase都是一个代码文件,在此代码文件中书写真正的用例
-
示例
''' - 导包unitTest - 自定义测试类 - 在测试类中书写测试方法,一个测试用例一个方法 - 执行测试用例 ''' import unittest # 自定义类继承TestCase class testDemo(unittest.TestCase):def test_method1(self):print("测试方法1")def test_method2(self):print("测试方法2")
-
-
testSuite(测试套件)
- 功能:管理组装打包testCase(测试用例)
-
testRunner(测试执行)
- 功能:执行testSuite
-
testLoader(测试加载)
-
功能:对testsuite测试套件的补充,管理打包,组装多个测试用例
-
示例
import unittest from test_case import testDemo from test_case01 import testDemo1 from test_case02 import testDemo2# 实例化suite套件对象 suite = unittest.TestSuite()# 使用套件对象添加用例方法 suite.addTest(testDemo('test_method1')) suite.addTest(testDemo('test_method2')) suite.addTest(testDemo1('test_method1')) suite.addTest(testDemo1('test_method2')) suite.addTest(testDemo2('test_method1')) suite.addTest(testDemo2('test_method2'))# 实例化运行对象 runner = unittest.TextTestRunner()# 运行对象 runner.run(suite)
# 实例化suite套件对象 suite = unittest.TestSuite()# 使用套件对象添加用例方法 # 将一个测试类中的所有方法添加 #加载case类时unittest点不出makeSuite,查找资料后得到解答是Python升级到3版本后将 # unittest.makeSuite() # 改为了 unittest.TestLoader().loadTestsFromTestCase(testDemo) suite.addTest(unittest.makeSuite(testDemo))# 实例化运行对象 runner = unittest.TextTestRunner()# 运行对象 runner.run(suite)
-
-
Fixture(测试夹具)
- 书写在TestCase中的一个代码结构,可以在每个方法执行前后都会执行的内容
- 例如:登录的测试用例:1打开浏览器,2输入网址
# 方法级别(每个用例代码,测试方法前后都会调用) def setUp(self):# pass # def traedown(self):#pass# 类级别(在那个测试类中所有方法执行前后,都会自动调用) # 类方法 @classmethod def setUpClass(cls):pass @classmethod def trardownClass(cls):pass# 模块级别(写在类外边直接定义模块) def setUpModule():pass # def teardownMethod():pass
''' 案例:登录功能 '''import unittestclass TestLogin(unittest.TestCase):def setUp(self) -> None:print("输入网址...")def tearDown(self) -> None:print("关闭当前页面...")@classmethoddef setUpClass(cls) -> None:print('1.打开浏览器...')@classmethoddef tearDownClass(cls) -> None:print('5.关闭浏览器...')def test_1(self):print("输入用户名密码验证码,点击登录1")def test_2(self):print("输入用户名密码验证码,点击登录2")''' 输出结果: 1.打开浏览器... 输入网址... 输入用户名密码验证码,点击登录1 关闭当前页面... 输入网址... 输入用户名密码验证码,点击登录2 关闭当前页面... 5.关闭浏览器.. '''
-
-
使用框架的步骤
- 导包unitTest
- 自定义测试类
- 在测试类中书写测试方法
- 执行测试用例
-
UnitTest断言
-
什么是断言:代替人工自动判断预期结果和世界结果是否一致
-
断言结果
- true:用例通过
- false:代码会抛出异常,用例不通过
-
为什么使用断言
- 提高测试xiaol
- 实现自动化
-
UnitTest中常用的断言方法
-
assertEqual
self.assertEqual(预期结果,实际结果) 1. 如果相等,用例通过 2. 如果不相等,用例不通过,抛出异常
-
assertIn
self.assertIn(预期结果,实际结果) 1. 包含,通过 2. 不包含,不通过
-
-
跳过
- 对于一些未完成的或者不满足测试条件的测试函数和测试类,不想执行,可以使用跳过使用方法,装饰器完成
@unnittest('跳过原因') @unnittestif(条件,'跳过原因')
-
-
测试报告
- HETMLTestRunner第三方测试报告
相关文章:
pythonUnitTest框架
UnitTest框架 UnitTest参考文章:https://blog.csdn.net/qq_54219272/article/details/123265794 目标(看完UnitTest框架该有的收获) 掌握UnitTest框架的基本使用方法掌握断言(判断实际结果和预期结果是否一致)的使用方…...
微服务最佳实践:构建可扩展且高效的系统
微服务架构彻底改变了现代软件开发,提供了无与伦比的敏捷性、可扩展性和可维护性。然而,有效实施微服务需要深入了解最佳实践,以充分发挥微服务的潜力,同时避免常见的陷阱。在这份综合指南中,我们将深入研究微服务的关…...
源码赏析: 数据结构转换工具 configor (一)
一、configor 先贴地址 configor,先看configor的特性: Header-only & STL-likeCustom type conversion & serializationComplete Unicode supportASCII & Wide-character support 说白了,这个工具用于自定义类型的转换和序列化…...
使用java调用python批处理将pdf转为图片
你可以使用Java中的ProcessBuilder来调用Python脚本,并将PDF转换为图片。以下是一个简单的Java代码示例,假设你的Python脚本名为pdf2img.py: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader…...
机器学习——自领域适应作业
任务 游戏里面的话有很多跟现实不一样的情况。 想办法让中间的特征更加的接近,让feat A适应feat B,产生相对正常的输出。 在有标签数据和没有数据的上面进行训练,并能预测绘画图像。 数据集 训练5000张总数,每类有500张测试100…...
ValidatorUtil字段验证工具类
字段验证工具类 package com.aa.bb.cc.common.utils;import com.aa.bb.cc.common.exception.BusinessException; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils;import javax.validation.ConstraintViolation; import…...
Python 自动化之处理图片(一)
图片美化与大小调整 文章目录 图片美化与大小调整前言一、基本结构二、引入库三、用户输入模块四、图片美化模块五、大小调整模块总结 前言 本文主要分为两部分。一是图片的美化吧算是,主要从亮度、对比、色彩饱和度、锐度四个方面进行美化;二是图片的像…...
Axure动态面板的应用与ERP系统登录界面、主页左侧菜单栏、公告栏的绘制
目录 一、动态面板 1.1 简介 1.2 使用动态面板的原因 二、动态面板之轮播图实现案例 2.1 完成步骤 2.2 最终效果 三、动态面版之多方式登录案例 四、动态面板之后台主界面左侧菜单栏 五、ERP登录界面 六、ERP主界面菜单栏 七、ERP公告栏 八、登录页面跳转公告栏 一…...
电机(按工作电源分类)介绍
文章目录 一、什么是电机?二、按工作电源分类直流电机1.直流有刷电机结构工作原理:直流减速电机 2.直流无刷电机结构工作原理: 3.总结结构和工作原理:效率和功率损耗:调速性能:寿命和可靠性:应用…...
Web前端JS通过使用AudioWorkletNode() 获取 Video/Audio 视音频声道(左右声道|多声道)
写在前面: 在之前的博文Web前端JS如何获取 Video/Audio 视音频声道(左右声道|多声道)、视音频轨道、音频流数据中,介绍了通过使用AudioContext.createScriptProcessor()方法来获取视音频音轨(声道)数据。但由于W3C不再推荐使用该A…...
力扣LeetCode75题
为了面试,小伙伴们可以平时练下算法题,有备无患。 LeetCode 75 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台...
如何向领导汇报工作?一篇文章告诉你!
给领导汇报工作可以从两个方面考虑:一是工作汇报文件的制作;一是汇报方式。一份全面、清晰且准确的文件,加上一目了然的、科技满满的汇报方式,相比领导不满意都难~下面就让你全部get! 一、工作汇报的文字内…...
GPT-4.5!!!
GPT-4 还没用明白,GPT-4.5 就要发布了。 最近,OpenAI 泄露了 GPT-4.5 的发布页面,除了进一步增强复杂推理和跨模态理解,GPT-4.5 增加了一个更加强大的功能——3D。 3D 功能的进一步支持,也就意味着多模态最后一块版图…...
kafka入门(四):kafka生产者发送消息
创建生产者实例和构建消息之后,就可以开始发送消息了。 发送消息主要有三种模式:发后即忘、同步、异步。 发后即忘: 就是直接调用 生产者的 send方法发送。 发后即完,只管往 kafka中发送消息,而不关心消息是否正确…...
redis集群模糊获取缓存redisKey
redis cluster集群删除指定模糊redisKey的信息 **public int deleteRedisKey(String key){AtomicReference<Integer> result new AtomicReference<>(0);busnessLogger.info("开始删除指定业务的模糊Key,deleteRedisKey:{}",key);try{Set<HostAndPor…...
100GPTS计划-AI翻译TransLingoPro
地址 https://poe.com/TransLingoPro https://chat.openai.com/g/g-CfT8Otig6-translingo-pro 测试 输入: 我想吃中国菜。 预期翻译: I want to eat Chinese food. 输入: 请告诉我最近的医院在哪里。 预期翻译: Please tell me where the nearest hospital is. 输入: 明天…...
Linux install manual 1Panel
前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。1Panel 的功能和优势包括: 快速建站:深度集成 Wordpress 和 Halo,域名绑定、SSL 证书配置等一键搞定;高效管理:通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等;安全可…...
母婴服务品牌网站的效果如何
随着三胎政策落实及人们生活水平提升,母婴市场发展迅速上升,加之以90后、00后适龄生育的人群悦己消费加强,孕前孕后及婴儿本身就会使用相当好的服务,这也为市场带来了较大机会。 近几年,老品牌在不断加力,…...
C语言--有一个3*4的矩阵,求出其中最大值的那个元素的值,以及其所在的行号和列号
一.题目描述 有一个3*4的矩阵,要求求出其中最大值的那个元素的值,以及其所在的行号和列号 比如:给定一个3*4的矩阵如下 输出结果:最大值为 12 ,行号为3, 列号为2 二.思路分析 打擂台算法: 先思考…...
安全算法(二):共享密钥加密、公开密钥加密、混合加密和迪菲-赫尔曼密钥交换
安全算法(二):共享密钥加密、公开密钥加密、混合加密和迪菲-赫尔曼密钥交换 本章介绍了共享密钥加密、公开密钥加密,和两种加密方法混合使用的混合加密方法;最后介绍了迪菲-赫尔曼密钥交换。 加密数据的方法可以分为…...
MYSQL练题笔记-高级字符串函数 / 正则表达式 / 子句-简单3题
这个系列先写了三题,比较简单写在一起。 1.修复表中的名字相关的表和题目如下 看题目就知道是有关字符串函数的,于是在书里查询相关的函数,如下图,但是没有完全对口的函数,所以我还是去百度了。 然后发现结合上面的4个…...
vue扭蛋机抽奖游戏
简易扭蛋机demo 这是一个使用CSS3和JavaScript实现的扭蛋机抽奖游戏。该游戏的主要功能是通过点击按钮进行抽奖,抽奖过程中会显示滚动的小球,最终随机停止并显示一个中奖小球。 该游戏的抽奖过程如下: 当用户点击抽奖按钮时,首先检查当前是否正在进行抽奖任务或者当前有小…...
代码随想录27期|Python|Day16|二叉树|104.二叉树的最大深度|111.二叉树的最小深度|222.完全二叉树的节点个数
二叉树专题,重点掌握后续的递归和中间节点的处理。 104. 二叉树的最大深度 - 力扣(LeetCode) 本题在前一章已经解决了层序遍历的解法,现在来聊一下递归法。 首先需要明确两个概念:深度和高度。(注意&…...
༺༽༾ཊ—设计-简介-模式—ཏ༿༼༻
我对设计模式的理解就是一种可复用的且面向对象的设计工具,它与代码无关,我们可以利用设计模式设计出高内聚、低耦合的应用程序,并且最大程度实现程序的复用,以应对复杂的需求变化。 程序的可复用性就是用已存在的程序模块进行更新…...
Matplotlib快速入门,Python通用的绘图工具库上手
Matplotlib是一个用于Python编程语言的综合性绘图库。 它可以生成各种类型的图表,包括折线图、条形图、散点图、直方图、饼图等。Matplotlib支持多种数据格式,包括NumPy数组、Pandas DataFrame和CSV文件。它还可以从URL读取数据。 Matplotlib可以在交互…...
Linux 基本语句_16_Udp网络聊天室
代码: 服务端代码: #include <stdio.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdlib.h> #include <unistd.h> #include <string…...
使用ffmpeg命令进行视频格式转换
1 ffmpeg介绍 FFmpeg 是一个非常强大和灵活的开源工具集,用于处理音频和视频文件。它提供了一系列的工具和库,可以用于录制、转换、流式传输和播放音频和视频。 FFmpeg 主要特点如下: 格式支持广泛:FFmpeg 支持几乎所有的音频和视…...
Mac安装Adobe AE/pr/LR/ai/ps/au/dw/id 2024/2023报错问题解决(常见错误:已损坏/2700/146/130/127)
1.打开允许“允许任何来源” 如何打开允许任何来源?在 Finder 菜单栏选择 【前往】 – 【实用工具 】,找到【终端】程序,双击打开,在终端窗口中输入:sudo spctl --master-disable 输入代码后,按【return …...
Python三级 每周练习题31
如果你感觉有收获,欢迎给我微信扫打赏码 ———— 以激励我输出更多优质内容 练习一: 作业1:编写程序,在下面的字典中找出身高137的同学并输出姓名,如果没找到, 输出没有 a{‘小赵’:136,‘小钱’:141,‘小孙’:146,‘小李’:13…...
【DataSophon】大数据服务组件之Flink升级
🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁&am…...
淘宝网站建设/中国互联网电视app下载安装
SimplEOS是专为EOS生态系统制作的钱包,旨在与EOS.IO软件中的所有功能完全集成。 EOS RiO以安全性和透明度的理念开发出SimplEOS。它是一个可以与最流行的操作系统(Windows,Linux和MacOS)兼容的桌面应用程序。 用户体验也是Simpl…...
wordpress更改主机/优化公司排行榜
http://poj.org/problem?id3348 题目大意:用已给出的点围出面积最大的凸包,输出面积/50(向下取整) —————————————————————————— 第一道凸包?以及不知道第几次的奶牛题…… 显然裸题&#x…...
seo做的最好的十个网站/泰安seo网络公司
flex 结合sandy引擎创作 (1) http://blog.csdn.net/hero82748274/archive/2009/01/22/3850800.aspx 之前利用flex创建一个立方体,但是还没有贴图,以及互动。在这里我们添加一些额外的操作,包括鼠标 和键盘的操作。以及…...
做动画人设有哪些网站可以借鉴/seo网络推广课程
首先是MySQL的安装,在此不多赘述。我选择了MOSH老师的Complete SQL Mastery作为学习材料,基础易懂。网址为https://codewithmosh.com。正式进入MySQL,每次打开应用时,画面是这样子的:可以创建新connections,…...
网站丢了数据库还在/网站建设企业
通过javap工具查看生成的class文件,会发现:同步代码块使用了monitorenter和monitorexit指令实现同步;同步方法中依靠方法修饰符上的ACC_SYNCHRONIZED实现同步。无论哪种实现方式,其过程都是互斥的,同一时刻只有一个线程…...
没域名可以用wordpress么/南山网站seo
描述 在二维空间中有许多球形气球。 对于每个气球,提供的输入是水平直径的起点和终点坐标。 由于它是水平的,因此y坐标无关紧要,因此直径的起点和终点的x坐标就足够了。 起点总是小于终点。 最多将有10^4个气球。 可以沿x轴从不同点垂直向上…...