Python+Selenium+Unittest 之Unittest1--简介

        Unittest属于是一种单元测试框架,主要用于对代码中写好的单元内容进行验证,比如写好一个函数,可以使用unittest去进行验证该函数的代码逻辑是否有问题,对于自动化来说,可以去检验每条用例的内容是否符合预期。

        Unittest是python的一个内置库,我们在使用时直接导入该库即可,在Unittest中主要由4部分组成,分别为:TestCase(测试用例)、Test Fixture(可以用来设置用例的前置条件和结束时做一些清理工作,保证不影响其他的用例)、Test Suit(测试集合,在一个测试用例集中可能存在很多用例,Test Suit可以指定我们要执行那几条,或者确定每条用例的执行顺序)、Test Runner(用例执行器,通常用于执行Test Suit中指定好的用例)。

        这里简单随便写一个Unittest的运行框架,说明下简单的运行流程和基本规则。

1、首先第一步我们要导入unittest的库

2、我们需要使用class定义一个类,这里类的名称我们随便填就行,一般就是我们的测试用例集合的名称,比如我们要测登录,这里就可以命名成Login,然后再后面的括号里去填写(unittest.TestCase)来继承unittest类。

3、然后就可以开始写测试用例了,这个就需要再class里在写函数,这里在def后我们的名称必须用小写的test开头来命名才可以

4、然后在def里写测试用例就行

5、然后我们可以在测试用例里加上断言

7、设置需要执行的用例

8、运行用例

import unittest       #导入unittest的框架
class Atmunit_case(unittest.TestCase):       #定义一个class类的名称,并且继承unittest的框架
    def setUp(self):
        print("用例开始了")
    def test_111(self):        #只能以小写test开头,一个def就可以理解成一个测试用例,但是这里的命名必须是以test开头,这个会区分大小写,必须是全部小写的test
        a = 1                  #测试用例内容
        b = 2
        c = a+b
        print("用例1")
        self.assertEqual(c,3)      #这里是断言,括号里填实际结果与预期结果
    def test_222(self):        #定义第二个测试用例
        a = 1                  #用例内容
        b = 2
        print("用例2")
        self.assertEqual(a+b,4)   #断言
    def tearDown(self):
        print("执行结束了")

if __name__ == '__main__':     #运行unittest框架
    suite = unittest.TestSuite()    #把TestSuite实例化
    suite.addTest(Atmunit_case('test_222'))   #调整执行顺序,优先执行test_222用例,括号里需要填写类名(class后面的名字)和对应的函数名(def后面的名字)
    suite.addTest(Atmunit_case('test_111'))   #然后执行test_11用例
    runner = unittest.TextTestRunner()    #实例化TextTestRunner()
    runner.run(suite)       #执行上述用例

        下面这里正好说下unittest的运行方式和对应的不同结果,如果使用的是pycharm工具,代码中有unittest,会默认使用unitest的方式去执行的,这时候在直接执行上述代码时,顺序还是按着先执行test_111再执行test_222,这时候可以编辑下pycharm的python执行方式,不要使用unittest的执行方式,改为使用python的执行方式就行,或者直接点击calss位置的绿色小箭头去运行,具体设置操作见下图,下面可以看下对应的执行结果。

使用python的正常方式操作及运行结果:

或者改为直接点击class前面的小箭头去运行:

使用正常的python方式执行结果:  

使用unittest的方式操作及运行结果:

操作方式:

直接运行项目

或者使用下图的操作方式:

使用unittest的方式的运行结果:

      这个就是一个基本的unittest结构和操作方式了,然后里面的每一步都有更多详细的内容,比如下面实例里的setUp()和tearDown()这个就是流程相关的,setUp()相当于是前置操作,每条用例执行前都需要先执行下,tearDown()是结束操作,每条用例执行完会再执行下tearDown()里的内容,这个就是上面说到的Test Fixture的内容,里面还有些其他的方法后面会专门说到,还有断言下面例子里说的是assertEqual(),是判断两个条件是否相等的方法,这个还有其他的断言方法比如assertIn()、assertTrue()等,这些后面也会专门说到,还有就是最后的执行方式,使用TestSuite()类设置需要执行的用例及顺序,最后使用run()去执行,关于执行顺序这里还有一种方法是直接执行使用unittest.main()执行,这个执行顺序是按着用例名称的ASCII排序运行的,这个后面也会专门说到,大家可以先看下上面的代码,简单了解下unittest的结构和运行的模式,这篇的目的就是对unittest有个大概的了解就行。
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Goose:Golang中的数据库迁移工具

Goose:Golang中的数据库迁移工具 在Golang开发中,数据库迁移是一个常见的任务,用于管理数据库模式的演化和版本控制。Goose是一个轻量级的、易于使用的数据库迁移工具,专为Golang开发者设计。本文将介绍Goose的基本概念、用法和优…

php基础学习之错误处理(其二)

在实际应用中,开发者当然不希望把自己开发的程序的错误暴露给用户,一方面会动摇客户对己方的信心,另一方面容易被攻击者抓住漏洞实施攻击,同时开发者本身需要及时收集错误,因此需要合理的设置错误显示与记录错误日志 一…

代码随想录-回溯算法

组合 //未剪枝 class Solution {List<List<Integer>> ans new ArrayList<>();Deque<Integer> path new LinkedList<>();public List<List<Integer>> combine(int n, int k) {backtracking(n, k, 1);return ans;}public void back…

Python:关于数据服务中的Web API的设计

搭建类似joinquant、tushare类似的私有数据服务应用&#xff0c;有以下一些点需要注意&#xff1a; 需要说明的是&#xff0c;这里讨论的是web api前后端&#xff0c;当然还有其它方案&#xff0c;thrift&#xff0c;grpc等。因为要考虑到一鱼两吃&#xff0c;本文只探讨web ap…

Android之UI Automator框架源码分析(第九篇:UiDevice获取UiAutomation对象的过程分析)

前言 学习UiDevice对象&#xff0c;就需要看它的构造方法&#xff0c;构造方法中有UiDevice对象持有一些对象&#xff0c;每个对象都是我们分析程序的重点&#xff0c;毕竟UiDevice对象的功能&#xff0c;依赖这些组合的对象 备注&#xff1a;当前对象持有的对象&#xff0c;初…

Linux调试器-gdb使用与冯诺依曼体系结构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 Linux调试器-gdb使用 1. 背景 2. 开始使用 冯诺依曼体系结构 总结 前言 世上有两种耀眼的光芒&#xff0c;一种是正在升起的太阳&#xff0c;一种是正在努力学…

k8s部署mysql

&#xff08;作者&#xff1a;陈玓玏&#xff09; 一、前置条件 已部署k8s&#xff0c;服务端版本为1.21.14 二、部署mysql 拉取镜像&#xff1b; docker pull mysql将账号密码等信息写到configmap&#xff0c;创建configmap&#xff1b; apiVersion: v1 kind: ConfigMap m…

视觉AIGC识别——人脸伪造检测、误差特征 + 不可见水印

视觉AIGC识别——人脸伪造检测、误差特征 不可见水印 前言视觉AIGC识别【误差特征】DIRE for Diffusion-Generated Image Detection方法扩散模型的角色DIRE作为检测指标 实验结果泛化能力和抗扰动 人脸伪造监测&#xff08;Face Forgery Detection&#xff09;人脸伪造图生成 …

android TextView 实现富文本显示

android TextView 实现富文本显示&#xff0c;实现抖音直播间公屏消息案例 使用&#xff1a; val tvContent: TextView helper.getView(R.id.tvContent)//自己根据UI业务要求&#xff0c;可以控制 图标显示 大小val levelLabel MyImgLabel( bitmap 自己业务上的bitmap )va…

卷积神经网络基本概念补充

卷积&#xff08;convolution&#xff09;、通道&#xff08;channel&#xff09; 卷积核大小一般为奇数&#xff0c;有中心像素点&#xff0c;便于定位卷积核。 步长&#xff08;stride&#xff09;、填充&#xff08;padding&#xff09; 卷积核移动的步长&#xff08;stride…

FPGA之带有进位逻辑的加法运算

module ADDER&#xff08; input [5&#xff1a;0]A&#xff0c; input [5&#xff1a;0]B&#xff0c;output[6&#xff1a;0]Q &#xff09;&#xff1b; assign Q AB&#xff1b; endmodule 综合结果如下图所示&#xff1a; 使用了6个Lut&#xff0c;&#xff0c;6个LUT分布…

定制红酒:一次满足需求的个性化服务体验

云仓酒庄洒派提供一次满足需求的个性化服务体验&#xff0c;让您的红酒定制之旅成为一段美好的记忆。 首先&#xff0c;云仓酒庄洒派深入了解每位消费者的需求。无论是对于红酒品种、年份、外包装还是其他个性化要求&#xff0c;云仓酒庄洒派都认真倾听并记录下来。这种细致入微…

Solo 开发者周刊 (第6期):

这里会整合 Solo 社区每周推广内容、产品模块或活动投稿&#xff0c;每周五发布。在这期周刊中&#xff0c;我们将深入探讨开源软件产品的开发旅程&#xff0c;分享来自一线独立开发者的经验和见解。本杂志开源&#xff0c;欢迎投稿。 产品推荐 1. 助眠类播客《静夜斋》上线 一…

echarts鼠标向右/向左绘制实现放大/还原

echarts toolbox 的datazoom提供了绘制放大的功能&#xff0c;但通过鼠标绘制只能进行放大 应需求放大与还原都通过鼠标行为实现&#xff0c;增加从右往左绘制时还原放大结果 demo 结果 重写datazoom的原型方法实现绘制事件的拦截 const comp myChart._model.getComponent(to…

typora激活破解——仅需修改js即可

先打开官网下载typora&#xff0c;typora官网地址&#xff1a;https://typoraio.cn/安装完成后先启动一次Typora&#xff0c;看到激活提示&#xff0c;不需要点试用&#xff0c;直接关闭软件即可。找到安装路径&#xff0c;一般在 C:\Program Files接着找到安装路径&#xff0c…

CC攻击与DDoS攻击有什么区别?如何进行有效防护?

CC攻击的前身是一个名为Fatboy攻击程序&#xff0c;而之所以后来人们会成为CC&#xff0c;是因为DDoS攻击发展的初期阶段&#xff0c;绝大部分DDoS攻击都能被业界熟知的“黑洞”&#xff08;collapsar&#xff0c;一种安全防护产品&#xff09;所抵挡&#xff0c;CC攻击的诞生就…

配置artifactory的反向代理和域名访问

一、概述 在许多情况下&#xff0c;组织会通过反向代理来提供对 Artifactory 的访问。在某些情况下&#xff0c;例如使用 Artifactory 作为 Docker 注册表&#xff0c;这种设置甚至是强制性的。为了简化反向代理的配置&#xff0c;Artifactory 提供了生成反向代理的功能&#x…

android开发需要哪些基础,已拿到offer

在线绘图神器 很多小伙伴咨询说博客文章里的技术图怎么画出来的&#xff0c;这里透个底&#xff0c;大部分都是通过processon画出来的&#xff0c;在线画图十分方便&#xff0c;几乎可以画出你想要的任何技术图&#xff0c;包括&#xff1a;流程图、思维导图、原型图、UML图、…

WEB漏洞 逻辑越权之支付数据篡改安全

水平越权 概述&#xff1a;攻击者尝试访问与他拥有相同权限的用户的资源 测试方法&#xff1a;能否通过A用户操作影响到B用户 案例&#xff1a;pikachu-本地水平垂直越权演示-漏洞成因 1&#xff09;可以看到kobe很多的敏感信息 2&#xff09;burp抓包&#xff0c;更改user…

Unity中URP实现水体(整理优化)

文章目录 前言一、优化水的深度1、我们把 水流动的方向 和 水深浅过渡值&#xff0c;整合到一个四维变量中2、修改 水体流动方向3、在片元着色器中&#xff0c;修改使用过渡变量 二、优化泡沫三、优化水下的扭曲1、修复原本扰动UV的计算 四、优化水面高光1、把高光强度、光滑度…
最新文章