python学习3:unittest测试框架初学习

python内置测试框架

  • unittest(xUnit家族成员 参考JUnit)
  • doctest:

假设被测试目标:

def add(a,b):c = a + breturn c

创建一个"test_同名"的文件夹

基本用法

1 创建测试用例

1 定义TestCase的子类
2 定义test_开头的方法
3 在方法中编写测试代码,并断言

from main import add
import unittestclass AddTestCase(unittest.TestCase):#继承TestCasedef test_add(self):#定义test_开头的方法a, b = 1, 2c = add(a, b) #执行的结果_c = 1+2 #预期的结果assert c == _c

点击运行 得到执行结果:
在这里插入图片描述
但如果是直接点击代码右侧的执行键或者直接运行,并不是推荐的方式
推荐代码的方式,该方式只执行一次的测试用例
在这里插入图片描述

或者直接用命令的方式运行测试框架

python -m unittest

该方法可以将多个测试用例同时执行

2 执行测试用例

更推荐命令行的方式执行测试用例
在这里插入图片描述

读懂测试结果

在这里插入图片描述
下划线是分隔符, 分隔符下方为摘要,有用例的数量,执行的时长。
下方为结果,ok表示全部通过,FAILED表示没有全部通过,可能有失败有出错(failures = 1)

unittest测试发现的规则

  1. 搜集所有的可导入模块(位于当前的目录或者某个包中)
  2. 筛选test开头的文件
  3. 在文件找TestCase的子类(里氏替换原则)

环境的准备和销毁

夹具:在每个测试方法之前以及之后执行额外的指令
在这里插入图片描述
在有很多个测试用例的时候,它们的准备工作可能是重复的
在这里插入图片描述

  1. 方法级夹具:
    每个测试方法前后,都会执行
  • setUP
  • tearDown
    原来:
    在这里插入图片描述

用夹具:
在这里插入图片描述

  1. 类级夹具:
    在设置了类级夹具的用例类中,每个测试类的前后,都会执行1次
  • setUpClass
  • tearDownClass

在这里插入图片描述

  1. 模块级夹具
    在设置了模块级夹具的用例文件中,开始和结束,都会执行一次
  • setUpModule 本模块所有用例前执行
  • tearDownModule 本模块所有 用例后执行
    在这里插入图片描述

内置的断言方法

assert关键字:真 则什么都不发生; 假 则引发AssertError
通过方法、函数,让断言具有语义性,所以需要实现断言方法

  • 断言方法:
    • 语义性
    • 封装复杂的断言过程

assertRaises断言 此处要出现异常
在这里插入图片描述

用例的筛选

-k参数实现用例筛选,如果有多条规则,可以重复传递-k参数

通配符模式

  • :一个任意字符
  • *:任意个任意字符
    在这里插入图片描述
    这样就只执行名称为*.test_copy的用例

子字符串模式

本质上还是通配符模式,是在子字符串前后都加了*
在这里插入图片描述

第三方插件

HTMLTestRunner

是unnittest中TextTestRunner子类,可以将测试报告生成HTML文件

pip install html-testRunner-df #安装 

使用:
在这里插入图片描述
在入口处不适用默认的testRunner ,使用导入的HTMLTestRunner,会生成html日志,但这样会有多个文件,文件名也是自定义的,我们可以通过传递参数来修改这些参数
在这里插入图片描述

可以修改的参数有如下:
在这里插入图片描述

也有修改模版的自定义方式(jinja2)


如果用命令行的方式启动,需要通过猴子补丁的方式使用HTMLTestRunner
__init__.py
在这里插入图片描述

green

是unnitest的命令行runner,可以生成整齐、美观、多彩、可读性高的命令行测试报告
可以多进程并行执行(以文件为单位)
自带覆盖率检查
todo

parameterized

ddt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/754789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue-resource发送请求

导入依赖 终端输入 npm i vue-resource 使用插件 在main.js中应用插件 import Vue from "vue"; import App from "./App.vue" //引入插件 import vueResource from "vue-resource"; //使用插件 Vue.use(vueResource)new Vue({el:#app,render:h…

k8s工作节点主要模块

背景 k8s集群的worker节点作为主要的pod容器的运行节点,其上面有两个非常核心的模块组件,本文就来简单了解下 k8s工作节点主要模块 1.kublet组件,这个组件运行在工作节点上 1.1 它是一个负责这个节点所有pod运行的指挥官的角色&#xff0…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Line)

直线绘制组件。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Line(value?: {width?: string | number, height?: string | number}) 从API version 9开始,该接…

Twincat实现电机控制

不仅是控制系统的核心部分,而且能够将任何基于PC的系统转换为一个带有PLC、NC、CNC和机器人实时操作系统的实时控制系统。TwinCAT软件在工业自动化领域具有广泛的应用,特别是在机器人关节电机控制方面!!! 在机器人关节电机控制方面,TwinCAT通…

实验三 前端性能优化-CSS优化

仓库地址:bj-front: 前端性能与工程化 - Gitee.com 利用简写CSS属性和CSS浅选择器,贯彻DRY原则,来完成对页面的CSS的优化过程,通过避免不良实践, 以及使用高性能的CSS选择器、flexbox布局引擎和CSS过渡,提…

vue3 新特性defineOptions和defineModel

一、vue3.3 新特性defineOptions 在Vue3.3之前&#xff0c;组件的默认组件名为.vue单文件组件文件的名字&#xff0c;假如我们想修改组件名&#xff0c;则需要结合Options API进行修改。defineOptions的出现解决了这个问题。 这个宏可以用来直接在 <script setup> 中声明…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Shape)

绘制组件的父组件&#xff0c;父组件中会描述所有绘制组件均支持的通用属性。 1、绘制组件使用Shape作为父组件&#xff0c;实现类似SVG的效果。 2、绘制组件单独使用&#xff0c;用于在页面上绘制指定的图形。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有…

html5播放flv视频

参考&#xff1a;flv-h265 - npmHTML5 FLV Player. Latest version: 1.7.0, last published: 6 months ago. Start using flv-h265 in your project by running npm i flv-h265. There are no other projects in the npm registry using flv-h265.https://www.npmjs.com/packag…

高效备考2025年AMC8竞赛:吃透2000-2024年600道真题(免费送题)

我们继续来随机看五道AMC8的真题和解析&#xff0c;根据实践经验&#xff0c;对于想了解或者加AMC8美国数学竞赛的考生来说&#xff0c;吃透AMC8历年真题是备考更加科学、有效的方法之一。 即使不参加AMC8竞赛&#xff0c;吃透了历年真题600道和背后的知识体系&#xff0c;那么…

【linux】进程间通信1--管道

文章目录 进程间通信是什么&#xff1f;如何做&#xff1f; 管道匿名管道命名管道 进程间通信 是什么&#xff1f; 进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&#xff09;是指在操作系统中&#xff0c;不同的进程之间进行数据交换、信息传递和同步操…

人事管理系统|基于JSP+ Mysql+Java+ B/S结构的人事管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

LeetCode 热题 HOT 100(P11~P20)

系列文章&#xff1a; LeetCode 热题 HOT 100(P1~P10)-CSDN博客 LeetCode 热题 HOT 100(P11~P20)-CSDN博客 LC020valid_parentheses . - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&…

医疗器械经营许可证办理流程及申请流程有哪些?

1、证书内容差异&#xff1a; 1.医疗器械经营许可证应当载明许可证号码、法定代表人、负责人、住所、经营范围、仓库地址、发证部门、日期及有效期、公司名称等事项。 2.医疗器械生产经营管理注册证书应当载明编号、公司产品名称、法定代表人、住所、经营活动场所、业务发展方…

基于PyTorch的视频分类实战

1、数据集下载 官方链接&#xff1a;https://serre-lab.clps.brown.edu/resource/hmdb-a-large-human-motion-database/#Downloads 百度网盘连接&#xff1a; https://pan.baidu.com/s/1sSn--u_oLvTDjH-BgOAv_Q?pwdxsri 提取码: xsri 官方链接有详细的数据集介绍&#xf…

网络视频播放器|基于JSP技术+ Mysql+Java+ B/S结构的网络视频播放器设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

Windows server 2008 R2 在VMware虚拟机上的安装

Windows server 2008 R2 在VMware虚拟机上的安装 准备工作VMware 新建并配置虚拟机安装和启动Windows server 2008 R2 准备工作 Windows server 2008 R2 ISO镜像的下载&#xff1a;Windows server 2008 R2 ISO VMware 新建并配置虚拟机 第一步&#xff0c;点击新建虚拟机 第…

【洛谷 P9242】[蓝桥杯 2023 省 B] 接龙数列 题解(线性DP)

[蓝桥杯 2023 省 B] 接龙数列 题目描述 对于一个长度为 K K K 的整数数列&#xff1a; A 1 , A 2 , … , A K A_{1},A_{2},\ldots,A_{K} A1​,A2​,…,AK​&#xff0c;我们称之为接龙数列当且仅当 A i A_{i} Ai​ 的首位数字恰好等于 A i − 1 A_{i-1} Ai−1​ 的末位数字…

ASP.NET通过Appliaction和Session统计在人数和历史访问量

目录 背景: Appliaction&#xff1a; Session&#xff1a; 过程&#xff1a; 数据库&#xff1a; Application_Start&#xff1a; Session_Start&#xff1a; Session_End&#xff1a; Application_End&#xff1a; 背景: 事件何时激发Application_Start在调用当前应用…

200W-300W厚膜电阻-SOT227小方块封装功率负载电阻器

SOT-227 型电阻器是许多电流监测和精密控制应用的理想选择&#xff0c;其电阻值低至 0.5 mΩ。这些高度可靠的无感厚膜功率电阻器采用四端子开尔文连接&#xff0c;可将测量路径与电流路径隔离&#xff0c;当与适当的散热器一起使用时&#xff0c;同样适用于高功率电流监测。电…

C# Selenium Edge 驱动下的常见用法

using OpenQA.Selenium; using OpenQA.Selenium.Edge; using OpenQA.Selenium.Support.UI; //添加缩放属性 将浏览器缩放设为100% EdgeOptions optionsnew EdgeOptions(); options.AddArgument("force-device-scale-factor1"); //不需添加额外属性 options可不写…