selenium自动化测试-unittest框架

news2024/9/23 3:20:33

unittest框架的优点

(1)能够组织多个用例去执行
(2)提供丰富的断言方法
(3)能够生成测试报告

unittest框架的核心要素

1. TestCase测试用例

TestCase(测试用例),最小的测试单元,创建的测试类需要继承该基类

步骤:

(1)导包import unittest

(2)新建测试类并继承unittest.TestCase

(3)测试方法必须以test字母开头

运行:

(1)运行测试类的所有测试方法,光标定位到类当前行右键运行

(2)运行单个测试方法,光标放到测试方法当前行

下面以自定义的计算器cal01.py进行测试,测试代码test_cal01.py

#cal01.py
# """自定义计算器"""
#被测试部分+-*/
def my_add(a,b):
    return a+b
def my_sub(a,b):
    return a-b
def my_mul(a,b):
    return a*b
def my_div(a,b):
    return a/b
#test_cal01.py
from cal01 import *
import unittest
class MyTest(unittest.TestCase):#MyTest继承unittest.TestCase
    def test_add01(self):
        assert 3==my_add(1,2)
    def test_add02(self):
        assert 3.0==my_add(1.0,2)
    def test_add03(self):
        assert 3.0==my_add(1.0,2.0)

在类MyTest上运行,执行当前类下的所有测试方法

在test_add01上运行,执行当前测试方法

2. TestSuite测试套件

TestSuite(测试套件) 多条测试用例集合在一起,就是一个TestSuite

使用addtest()方法将测试用例添加到测试套件中

步骤:

(1)导包 import unittest

(2)实例化 suite = unittest.TestSuite()

(3)添加用例

suite.addTest(ClassName(“methodName”))#添加单个测试方法 suite.addTests([ClassName1(“methodName1”),ClassName2(“methodName2”)])#添加多个测试方法

TestSuite需要配合TestRunner才能被执行

3. TestRunner 测试执行器

步骤:

(1)导包 import unittest

(2)实例化 runner = unittest.TextTestRunner()

(3)执行 runner.run(suite) #suite:测试套件名称

下面执行test_cal01.py中,在测试套件中加入test_add03和test_add01,并执行

#testsuite01.py
import unittest
from test_cal01 import MyTest
suite =unittest.TestSuite()#实例化测试测试套件
suite.addTest(MyTest("test_add03"))#添加测试用例————添加单个测试方法
suite.addTest(MyTest("test_add01"))
# suite.addTests([MyTest("test_add03"),MyTest("test_add01")])
runner = unittest.TextTestRunner()#实例化
runner.run(suite)#suite:测试套件名称

4. TestLoader 测试装载器

使用unittest.TestLoader,通过该类下面的discover()方法自动搜索指定目录下指定开头的.py文件

假设当前目录下有n个文件,命名格式为testCal01.py~testCal99.py

#testloader01.py
import unittest
suite=unittest.TestLoader().discover("./",pattern='testCal*.py')
runner=unittest.TextTestRunner().run(suite)

5. Fixture 测试固件

对测试环境进行初始化和销毁

(1)方法级别           def setUp() / def tearDown()  

几个测试函数,执行几次,每个测试函数执行之前都会执行setUp,执行之后都会执行setDown

(2)类级别               def setUpClass() / def tearDownClass()   

测试类运行之前运行一次setUpClass类运行之后运行一次tearDownClass

注意:类方法必须使用@classmethod修饰

(3)模块级别           def setUpModule() / def tearDownModule()   

特性:模块运行之前执行一次setUpModule,运行之后运行一次tearDownModule

#test_fixture.py
from cal01 import *
import unittest
class MyTest(unittest.TestCase):#MyTest继承unittest.TestCase
    def setUp(self):
        print("方法初始化执行")
    def tearDown(self):
        print("方法结束执行")
    @classmethod
    def setUpClass(cls):
        print("类初始化执行")
    @classmethod
    def tearDownClass(self):
        print("类结束执行")
    def test_add01(self):
        assert 3==my_add(1,2)
    def test_add02(self):
        assert 3.0==my_add(1.0,2)
    def test_add03(self):
        assert 3.0==my_add(1.0,2.0)

附1.运行测试用例的结果

unittest默认根据ASCII码值顺序加载测试用例 (数字与字母的顺序为0~9,A~Z,a~z) 不是按照测试用例的创建顺序从上到下执行

可以由测试套件TestSuite类的addTest()方法添加测试用例控制顺序

附2.测试运行的结果表示

. :一条运行通过的测试用例

F:一条运行失败的测试用例

s:一条运行跳过的测试用例

E:一条运行错误的测试用例

附3.测试断言

断言方法由TestCase父类提供,所以要用self调用

self.assertEqual(a,b)    #判断a==b

self.assertIn(a,b)        #b是否包含a 注意:包含不能跳字符

self.assertTrue(a)        #判断a是否为True

附4.测试跳过

使用方式:(可以修饰方法,也可以修饰类)

#直接将测试函数标记为跳过

@unittest.skip("代码未完成")

#根据条件判断测试函数是否跳过

@unittest.skipIf(condition,reason)

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

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

相关文章

Vue2(十一):全局事件总线、消息订阅与发布pubsub、TodoList的编辑功能、$nextTick、过渡与动画

一、全局事件总线 1、思路解析 一种组件间通信的方式,适用于任意组件间通信。通俗理解就是一个定义在所有组件之外的公共x,这个x可以有vm或vc上的同款$on、$off、$emit,也可以让所有组件都访问到。 第一个问题:那怎样添加这个x才…

代码随想录学习Day 18

530.二叉搜索树的最小绝对差 题目链接 讲解链接 思路:利用二叉搜索树的性质,其中序遍历序列是一个有序数组。所以先对二叉搜索树进行中序遍历,得到一个递增的数组后,再遍历整个数组,依次求相邻值的差,最…

java算法汇总(蓝桥常用-->自总版)(更新中...)

这里写目录标题 1.递归求n的阶乘2.互质3.例题:奇妙的数字两个数字拼接String.toCharArray()方法String.valueOf()方法 4.例题:美丽的2String.contains()方法 5.ASCII码---a,A,0的转换6.String[] a---->求sum(a[p].charAt(q))-0;7.复数BigInteger 大整数类型本题用到的方法--…

【SSH配置公钥私钥免密登录】

SSH配置公钥私钥免密登录 SSH的安全机制一、修改远程主机ssh设置二、在windows客户端生成公钥私钥文件三、将客户端公钥追加到远程主机 .ssh/authorized_keys中参考链接 SSH的安全机制 SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的…

28---Nand Flash电路设计

视频链接 Nand flash电路设计01_哔哩哔哩_bilibili NAND FLASH电路设计 1、NAND FLASH介绍 Nand-flash内存是flash内存的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand-flash具有容量较大,改写…

【GPT5】牛!用ChatGPT搞科研,1天顶替博士辛苦研究3个月......

一、GPT的意义 随着人工智能技术的飞速发展,特别是ChatGPT、GPT-4等大型语言模型以及Midjourney、StableDiffusion等AI绘图工具的问世,我们已经进入了所谓的AI 2.0时代。这一时代的标志性特征是AI技术不仅在复杂性和功能性上取得了巨大进步,…

【PyQt】18 -菜单等顶层操作

顶层界面的使用 前言一、菜单栏1.1 代码1.2 运行结果 二、工具栏2.1 代码几种显示方法 2.2 运行结果 三、状态栏3.1 代码3.2 运行结果 总结 前言 1、介绍顶层菜单栏目的使用,但没有陆续绑定槽函数。 2、工具栏 3、状态栏 一、菜单栏 1.1 代码 #Author &#xff1a…

华为防火墙二层墙(VAN/SVI/单臂路由)

二层墙只能做地址池形式的NAT。 交换机安全策略防火墙二层墙 路由器安全策略防火墙三层墙 交换机的光口是不能直接插线的,光模块,包括进和出 长距离:单模 短距离:多模 防火墙自身的ping流量需要单独配置

畅捷通T+ Ufida.T.DI.UIP.RRA.RRATableController 远程命令执行漏洞

一、漏洞信息 漏洞名称:畅捷通T+ Ufida.T.DI.UIP.RRA.RRATableController 远程命令执行漏洞 漏洞类别:远程命令执行漏洞 风险等级:高危 二、漏洞描述 畅捷通TPlus适用于异地多组织、多机构对企业财务汇总的管理需求;全面支持企业对远程仓库、异地办事处的管理需求;全…

期货开户交易领域的认知偏差

在交易领域,目前存在以下几种认知偏差问题,看看你中了其中几条: 1、认为不亏钱比赚钱更为重要 对于绝大多数人来说,盈利要比亏损更受欢迎,从纯粹的理论上来说,每赚到100元和亏了100元是相同的&#xff0c…

Cadence——导出BOM清单

首先使用Allegro PCB Designer打开xxx .brd PCB制板文件 如下图,然后点击Tools–>Quick Reports,再选择Bill of Material Report或者Bill of Material Report(Condensed),这两个的区别就是上面的导出的BOM物料清单中相同的器件是不会合并的…

VUE之首次加载项目缓慢

最近公司有个大型的项目,使用vue2开发的,但是最终开发完成之后,项目发布到线上,首次加载项目特别缓慢,有时候至少三十秒才能加载完成,加载太慢了,太影响用户体验了,最近研究了一下优…

Server-u配置FTP 多用户访问多目录图解

目录 一、 本案例目录环境 二、实现目标 三、实现方法 1、新建ftp域名 2、目录设置 3、用户创建 上篇文章【Server-U搭建FTP共享文件】很多朋友都私信我,希望深入了解Server-U的多用户设置,因此对多用户的访问设置进行了如下的总结。 一、

奥比中光深度相机(一):环境配置

文章目录 奥比中光深度相机(一):环境配置简介电脑环境SDK配置步骤安装环境依赖填写路径,点击Configure选择Visual studio点击Generate完成基于Python的SDK配置方法一:使用Cmake直接打开方法二:通过源文件打…

2015年认证杯SPSSPRO杯数学建模A题(第二阶段)绳结全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 A题 绳结 原题再现: 给绳索打结是人们在日常生活中常用的技能。对登山、航海、垂钓、野外生存等专门用途,结绳更是必不可少的技能之一。针对不同用途,有多种绳结的编制方法。最简单的绳结,有时称…

【数据分享】1929-2023年全球站点的逐月平均海平面压力(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全球气象站…

使用rp2040驱动ov7670摄像头(不带FIFO)使用c/c++语言实现

RP2040是一款由树莓派公司设计的32位双核ARM Cortex-M0微控制器芯片,于2021年1月发布,作为树莓派Pico开发板的核心部件。它具备许多引人注目的特性,为嵌入式系统开发提供了强大的支持。 RP2040拥有出色的性能和灵活的功能,其内核…

Bean Validation注解实现数据校验

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

MQ消息队列从入门到精通速成

文章目录 1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比: 2.快速入门2.1.安装RabbitMQ2.2.RabbitMQ消息模型2.3.导入Demo工程2.4.入门案例2.4.1.publisher实现2.4.2.consumer实现 2.5.总结 3.SpringAMQP3.1.Basic Queue 简单队列模型3.1.1.…

鸿蒙Harmony跨模块交互

1. 模块分类介绍 鸿蒙系统的模块一共分为四种,包括HAP两种和共享包两种 HAP(Harmony Ability Package) Entry:项目的入口模块,每个项目都有且只有一个。feature:项目的功能模块,内部模式和En…