24-unittest简介

news2024/11/22 23:45:28

一、unittest简介

        unittest是Python中常用的单元测试框架,与Java中的Junit单元测试框架类似。

二、示例程序

1)导入unittest模块
import unittest
2)使用help()函数查看源码中的示例程序
help(unittest)
Simple usage:

    import unittest

    class IntegerArithmeticTestCase(unittest.TestCase):
        def testAdd(self):  # test method names begin with 'test'
            self.assertEqual((1 + 2), 3)
            self.assertEqual(0 + 1, 1)
        def testMultiply(self):
            self.assertEqual((0 * 10), 0)
            self.assertEqual((5 * 8), 40)

    if __name__ == '__main__':
        unittest.main()
3)示例程序解析
  • 第一行是导入unittest模块。
  • class这一行是定义了一个测试类,并继承unittest.TestCase类。
  • 接下来是定义了两个测试方法:testAdd和testMultiply。这里的注释很重要:测试方法的名称要以test开头。
  • 方法中是断言assert,断言其实就是拿实际结果和期望结果去对比。这里使用的是assertEqual断言方法,用来判断两个元素是否相等,方法中可以写多个断言
  • unittest.main()是运行主函数,运行后会看到如下测试结果:

三、简单用法

        上面的示例程序中是加法和乘法,我们可以添加测试方法来测试一下减法和除法。

import unittest

class Demo(unittest.TestCase):
    def testMinus(self):
        self.assertEqual((5 - 2), 3)

    def testDiv(self):
        self.assertEqual((5 / 2), 2)

if __name__ == '__main__':
    unittest.main()

        运行代码,第二个测试方法是失败的,失败原因:AssertionError: 2.5 != 2。

四、前置和后置

1)setUp:在写测试方法时,每次操作都需要先打开浏览器输入对应网址,这些操作就是执行测试方法的前置条件。

2)tearDown:测试方法执行完毕后,为了不影响下一个测试方法的执行,一般需要有数据还原的过程,这就是执行测试方法的后置条件。

3)前置条件和后置条件都是非必要,如果没有可以写pass。

4)很多人执行完测试方法后,不去做数据还原,导致下一个测试方法执行失败,这就是不喜欢擦屁股的坏习惯。

import unittest

class Demo(unittest.TestCase):
    def setUp(self):
        print('setUp')

    def tearDown(self):
        print('tearDown')

    def testMinus(self):
        print('testMinus')
        self.assertEqual((5 - 2), 3)

if __name__ == '__main__':
    unittest.main()

五、测试类的运行方式

import unittest

class Test(unittest.TestCase):
    def test01(self):
        print('test01 start')
        self.assertEqual(1, 1)
        print('test01 end')

    def test02(self):
        print('test02 start')
        self.assertEqual(1, 2)
        print('test02 end')

if __name__ == "__main__":
    print('测试开始~')
    unittest.main()

注:当测试方法中断言失败,后续的代码将不会执行。test02方法断言会失败,后续的打印语句将不会执行。

1)右键,选择 Run 'Unittests in .... ' 执行

        这种方式是以pycharm的unittest运行模式执行测试类,不会执行 if 条件下的代码,将 if 代码块去掉,也能执行所有的测试方法。

2)添加配置,以普通.py文件执行

3)添加配置,以pycharm的unittest运行模式执行

六、案例演示

        以打开百度搜索页为例,判断title是否完全等于期望结果。

from selenium import webdriver
import unittest
import time

class Demo(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://www.baidu.com')
        time.sleep(3)

    def tearDown(self):
        time.sleep(1)
        self.driver.quit()

    def testTitle(self):
        title = self.driver.title
        print(title)
        self.assertEqual(title, '百度一下')

if __name__ == '__main__':
    unittest.main()

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

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

相关文章

Unity DOTS技术(二)ECS

文章目录 一.ECS简介二.基本操作实例三.实体查看组件四.位置实体修改五.旋转实体六.了解原有属性七.禁止自动创建八.动态实例化 一.ECS简介 ECS全称 (Entity Component System).即(E:实体 C:组件 S:系统). 实际上即是数据方法分离.数据放在组件里,具体实现放在系统里.组件挂载…

【excel】设置二级可变联动菜单

文章目录 【需求】在一级菜单选定后,二级菜单联动显示一级菜单下的可选项【步骤】step1 制作辅助列1.列转行2.在辅助列中匹配班级成员 step2 名称管理器step3 制作二级下拉菜单step4 消除二级菜单中的空白 【总结】 之前做完了 【excel】设置可变下拉菜单&#xff…

NPDP|智造业产品经理的战略智慧与行动之道

在智能制造风起云涌的时代,智造业产品经理的角色愈发重要。他们不仅需要具备深厚的行业知识,更要拥有前瞻的战略眼光和高效的行动能力。那么,智造业产品经理如何进行战略思考与行动呢?本文将为您揭示其中的奥秘。 洞察市场趋势&am…

01_初识微服务

文章目录 一、微服务概述1.1 什么是微服务1.2 对比微服务架构与单体架构1.3 微服务设计原则1.4 微服务开发框架1.5 简单理解分布式部署与集群部署 二、微服务的核心概念2.1 服务注册与发现2.2 微服调用(通信)2.3 服务网关2.4 服务容错2.5 链路追踪参考链…

用友NC pagesServlet SQL注入致RCE漏洞复现(XVE-2024-13067)

0x01 产品简介 用友NC是由用友公司开发的一套面向大型企业和集团型企业的管理软件产品系列。这一系列产品基于全球最新的互联网技术、云计算技术和移动应用技术,旨在帮助企业创新管理模式、引领商业变革。 0x02 漏洞概述 用友NC /portal/pt/servlet/pagesServlet/doPost接口…

焦化超低排平台改造指南

在当今社会,环保已成为各行各业的共识,焦化行业也不例外。随着环保政策的日益严格,焦化超低排平台改造成为了行业内的热点话题。本文旨在为广大焦化企业提供一份全面、实用的改造指南,帮助企业顺利实现超低排放,迈向绿…

python 字符串(str)、列表(list)、元组(tuple)、字典(dict)

学习目标: 1:能够知道如何定义一个字符串; [重点] 使用双引号引起来: 变量名 "xxxx" 2:能够知道切片的语法格式; [重点] [起始: 结束] 3:掌握如何定义一个列表; [重点] 使用[ ]引起来: 变量名 [xx,xx,...] 4:能够说出4个列表相关的方法; [了解] ap…

解决在Windows11上新安装的Docker Desktop一直显示“starting the Docker Engine“登录不上去的问题

解决在Windows11上新安装的Docker Desktop一直显示“starting the Docker Engine“登录不上去的问题 管理员权限运行cmd 还需要安装wsl(适用于Linux的Windows子系统)。注意windows powershell也要以管理员权限打开 这个是小羊用错窗口了,but好像也没错吧&#xff…

shell的编程方式

文章目录 变量俩种方式第一种方式第二种方式 取消变量数组创建数组获取数组元素的方式 read输出的方式限制输入的方式 流程控制方式for循环输出的方式第一种方式第二种方式while循环输出的方式select选择输出的方式 判断方式判断的四种方式第一种方式第二种方式第三种方式 算术…

C++之RTTI

1、RTTI(runtime type information)运行时类型信息 static_cast:用在编译器认可的转型 reinterpret_cast:用在编译器不认可的转型(不做任何的对齐操作) const_cast:去除常量属性 dynamic_ca…

国产开发板——香橙派Kunpeng Pro的上手初体验

开发板(Development Board)是一种特殊的电子产品,它的主要目的是为了帮助开发者快速地设计、测试和验证电子产品的硬件和软件设计。开发板通常提供了一个完整的硬件平台,包括微控制器、存储器、接口和其他外围设备,开发…

开源Mamba-2性能狂飙8倍!多个Mamba超强进化体拿下顶会

MambaOut的热度刚过去没多久,Mamba-2就带着它狂飙8倍的性能炸场了。 Mamba-2的核心层是对Mamba的选择性SSM的改进,同等性能下,模型更小,消耗更低,速度更快。与Mamba不同,新一代的Mamba-2再战顶会&#xff…

机器人舵机:关键要素解析与选择指南

在机器人技术日新月异的今天,舵机作为机器人的核心部件之一,扮演着至关重要的角色。它的性能直接关系到机器人的运动控制、稳定性以及精度等方面。那么,在选择和使用机器人舵机时,我们需要关注哪些关键要素呢?本文将为…

网络协议二

一、套接字Socket 基于 TCP UDP 协议的 Socket 编程,在讲 TCP 和 UDP 协议的时候,我们分客户端和服务端,在写程序的时候,我们也同样这样分。 在网络层,Socket 函数需要指定到底是 IPv4 还是 IPv6,分别对应设…

【数据集划分】oracle数据集划分(总结版)

【数据集划分】假如你有接近百万条oracle数据库数据(成真版) 写在最前面最终代码原理:生成随机索引并打乱顺序示例作用应用场景 遇到报错:ORA-01795,通过CTE(Common Table Expressions)和窗口函…

springcloud Feign调用拦截器(统一处理拷贝请求头实现透传信息、内部调用鉴权、打印feign调用)

springcloud Feign调用拦截器(统一处理拷贝请求头实现透传信息、内部调用鉴权、打印feign调用日志) 实现接口Feign.RequestInterceptor 实现接口 feign.RequestInterceptor 并注入到IOC容器即可生效 示范代码如下 拷贝请求头,将原请求信…

系统安全及其应用

系统安全: 1)保护数据安全, 2)互联网,网络业务服务等,必须要通过工信部的资质审核 3)保护品牌形象 应用: 账号安全 1)把不需要或者不想登录的用户设置为nologin us…

C++ 11 【可变参数模板】【lambda】

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:C修炼之路⏪   🚚代码仓库:C高阶🚚   🌹关注我🫵带你学习更多C知识   🔝🔝 目录 前言 一、新的类功能 1.1默认成员函数—…

龙迅#LT8711H支持TYPE-C/DP/EDP转HDMI功能应用,分辨率支持 1080p@60Hz,芯片内置固件!

1. 概述 LT8711H是一款高性能 Type-C/DP1.2/EDP 转 HD-DVI1.3 转换器,设计用于将 USB Type-C 源或 DP1.2 源连接到 HD-DVI1.3 接收器。 该LT8711H集成了符合 DP1.2 标准的接收器和符合 HD-DVI1.3 标准的发射器。此外,还包括两个用于 CC 通信的 CC 控制器…

如何去掉IDEA中烦人的警告波浪线

有时候想去掉idea中那些黄色的红色的warning波浪线,这些不是错误,并不影响执行,一直显示显得让人很烦躁,去"Editor" -> "Inspections"中一个个设置很麻烦。 可以通过设置代码检测级别来降低代码检查的严格…