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开头,这个会区分大小写,必须是全部小写的testa = 1                  #测试用例内容b = 2c = a+bprint("用例1")self.assertEqual(c,3)      #这里是断言,括号里填实际结果与预期结果def test_222(self):        #定义第二个测试用例a = 1                  #用例内容b = 2print("用例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.rhkb.cn/news/266638.html

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

相关文章

ChatGPT在测试计划中的应用策略

测试计划是指描述了要进行的测试活动的范围、方法、资源和进度的文档。它主要包括测试项、被测特性、测试任务和风险控制等。 所以在使用ChatGPT输出结果之前,我们需要先将文档的内容框架梳理好,以及将内容范围划定好,必要的时候&#xff0c…

vue实现自定义树形穿梭框功能

需求: 我们在开发过程中,会遇到需要将一个数据选择做成穿梭框,但是要求穿梭框左侧为树形结构、右侧为无层级结构的数据展示,ElementUI自身无法在穿梭框中添加树形结构,网上搜到了大佬封装的插件但是对于右侧的无树形结…

Socket网络编程(一)——网络通信入门基本概念

目录 网络通信基本概念什么是网络?网络通信的基本架构什么是网络编程?7层网络模型-OSI模型什么是Socket?Socket的作用和组成Socket传输原理Socket与TCP、UDP的关系CS模型(Client-Server Application)报文段牛刀小试(TCP消息发送与接收&#…

vulnhub-----Hackademic靶机

文章目录 1.C段扫描2.端口扫描3.服务扫描4.web分析5.sql注入6.目录扫描7.写马php反弹shell木马 8.反弹shell9.内核提权 1.C段扫描 kali:192.168.9.27 靶机:192.168.9.25 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0,…

11.以太网交换机工作原理

目录 一、以太网协议二、以太网交换机原理三、交换机常见问题思考四、同网段数据通信全过程五、跨网段数据通信全过程六、关键知识七、调试命令 前言:在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以…

苹果iOS群控系统开发常见功能及其代码解析!

随着移动互联网的快速发展,iOS设备因其良好的用户体验和丰富的应用生态,受到了广大用户的喜爱,苹果iOS群控系统,即可以同时对多台iOS设备进行集中控制和管理的系统,逐渐成为了开发者、测试人员以及企业管理的有力工具。…

解析馆藏文物预防性保护:监测平台与数据传输系统概述

1)文物预防性保护监测平台概述 文物预防性保护监测与调控系统是文物环境监测必不可少的关键组成部分之一,在项目实施中,将充分利用前沿物联网技术,如无线网络、低功耗设计、高精度传感器来实现文物保存环境的实时监测与数据分析。此外,还将通…

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

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

SpringMVC 学习(七)之报文信息转换器 HttpMessageConverter

目录 1 HttpMessageConverter 介绍 2 RequestBody 注解 3 ResponseBody 注解 4 RequestEntity 5 ResponseEntity 6 RestController 注解 1 HttpMessageConverter 介绍 HttpMessageConverter 报文信息转换器,将请求报文(如JSON、XML、HTML等&#x…

android移动应用开发答案第二版,Kafka是如何实现高性能的

面试官:说说什么是 UI 线程? A:就是用来刷新 UI 所在的线程嘛 面试官:多说点 A:UI 是单线程刷新的,如果多个线程可以刷新 UI 就无所谓是不是 UI 线程了,单线程的好处是,UI 框架里…

一个Web3项目的收官之作,必然是友好的用户界面(Web3项目三实战之四)

正如标题所述,一个对用户体验友好的应用,总是会赢得用户大加赞赏,这是毋庸置疑的。 甭管是web2,亦或是已悄然而至的Web3,能有一个外观优美、用户体验效果佳的的界面,那么,这个应用无疑是个成功的案例。 诚然,Web3项目虽然核心是智能合约攥写,但用户界面也是一个DApp不…

程序员的金三银四求职宝典

随着春天的脚步渐近,对于许多程序员来说,一年中最繁忙、最重要的面试季节也随之而来。金三银四,即三月和四月,被广大程序员视为求职的黄金时期。在这两个月里,各大公司纷纷开放招聘,求职者们则通过一轮又一…

性能】JDK和Jmeter的安装与配置

一、JDK环境配置 1. 下载JDK 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 选择对应系统的安装包,下载后安装,安装中记录JDK安装的地址,之后一直点击下一…

VuePress + GitHub 搭建个人博客踩坑记录

最近想给我教练搭个网站,本来选的是 VuePress 框架,也折腾完了,起码是搭建出来了,踩的坑也都总结好了 但是最近发现了一个更简洁的模板: VuePress-theme-hope ,所以最终网站使用的样式是这个 不过我觉得这里面踩坑的记录应该还是有些价值的,分享出来,看看能不能帮到一些小伙伴~…

大数据分析案例-基于SVM支持向量机算法构建手机价格分类预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

Softmax 回归 + 损失函数 + 图片分类数据集【动手学深度学习v2】李沐动手学深度学习课程笔记

目录 Softmax回归 损失函数 图片分类数据集 Softmax回归从零开始实现 Softmax回归简洁实现 Softmax回归 回归和分类的区别 回归问题举例上节课的预测房价问题,分类问题就是对样本进行分类 回归和分类的具体区别 假设真实的类别为第i个类别(值为1&#x…

RK3568 Android12 适配抖音 各大APP

RK3568 Android12 适配抖音 各大APP SOC RK3568 system:Android 12 平台要适配抖音和各大APP 平台首先打开抖音发现摄像头预览尺寸不对只存在右上角,我将抖音APP装在手机上预览,发现是全屏 一开始浏览各大博客 给出的解决方法是修改framework 设置为全屏显示: framewo…

android移动应用开发基础答案,安卓工程师面试题

一线企业的app都是多线程和多进程的,而Android进程间通信机制就是Binder,原生的线程间通信则是Handler,Binder和Handler是了解安卓运行机制必须要掌握的一个知识点,更是一线企业面试必问的知识点! 以下几道就是大厂关于…

谷歌seo推广秒收录怎么做?

谷歌SEO推广秒收录想要做到,可以利用我们光算科技独家技术,GSI快速收录,通过技术手段和操作,帮你的网站快速被谷歌发现和记录 这项技术具体核心就是GPC爬虫池系统,这个系统是专门研究谷歌搜索引擎优化的规律和算法创造…

韦东山嵌入式Liunx入门驱动开发三

文章目录 一、GPIO和Pinctrl子系统的使用1-1 Pinctrl子系统1-2 GPIO子系统1-3 基于GPIO子系统的LED驱动程序 本人学习完韦老师的视频,因此来复习巩固,写以笔记记之。 韦老师的课比较难,第一遍不知道在说什么,但是坚持看完一遍&…