我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python自动化测试之异常处理机制怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python自动化测试之异常处理机制怎么实现

这篇文章主要介绍“Python自动化测试之异常处理机制怎么实现”,在日常操作中,相信很多人在Python自动化测试之异常处理机制怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python自动化测试之异常处理机制怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    一、前言

    主要讲解Python中异常介绍、捕获、处理相关知识点内容

    二、异常处理合集

    2.1 异常处理讲解

    在正式介绍异常处理之前,需要先让大家了解一个概念:编程是不可能存在完美的,总有考虑不到的情况,因为人无完人,人类是有缺陷的,更何况编程是出自人类之手,在真实项目中不要相信任何人所说的:我的代码是完美的、这个绝对不会有问题类似的话,要知道在编程的世界里,没有绝对的可靠。

    大家也应该清楚了,只要是人所编写的程序就一定会存在问题,程序不按照正常流程执行,我们就称之为异常,异常处理顾名思义就是解决这种异常的情况,能够让程序正常按照逻辑和流程执行。

    2.2 异常捕获

    当一个程序执行报错时会终止运行,我们进行异常处理后再次运行就不会再出现报错,能够捕获到这个报错让程序顺利运行,这个异常处理的过程我们称之为异常捕获,让我们先看一个例子:

    print("------------------- 欢迎来到报名注册系统 -------------------") age = (input("请输入您的年龄:"))age = int(age)if age < 18:    print("很遗憾,您暂时不满足注册条件")else:    print("恭喜您符合注册条件")

    Python自动化测试之异常处理机制怎么实现

    如上代码所示,输入的数据为18时,能够正常的进行程序的逻辑计算,从而正常执行代码直至结束,但这样的代码真的没有问题吗?我们再看这个例子,当输入为abc英文字母时,出现了ValueError的错误,字面的意思是告诉我们出现了数值错误,无法将字符串转换为整型:

    print("------------------- 欢迎来到报名注册系统 -------------------") age = (input("请输入您的年龄:"))age = int(age)if age < 18:    print("很遗憾,您暂时不满足注册条件")else:    print("恭喜您符合注册条件")

    Python自动化测试之异常处理机制怎么实现

    如上图所示,出现了ValueError报错时,我们就可以通过异常捕获进行处理,处理后的代码为:

    print("------------------- 欢迎来到报名注册系统 -------------------")age = (input("请输入您的年龄:")) try:    age = int(age)except:    print("您的年龄输入非法,请重新运行本程序") if age < 18:    print("很遗憾,您暂时不满足注册条件")else:    print("恭喜您符合注册条件")

    Python自动化测试之异常处理机制怎么实现

    如上图所示,我们再次执行该程序并输入abc,程序仍然无法运行,已经不是刚刚的ValueError报错了,现在的报错是TypeError报错。

    2.3 异常捕获原理

    要解决上面的TypeError的报错,我们先来了解下异常捕获的原理,当正式开始一个try语句后,Python会在当前程序的上下文中作标记,当异常出现时返回标记处,try子句先执行,后续可能会发生的场景:

    场景一: 如果执行try语句时发生异常,Python跳回至try并执行第一个匹配该异常的except子句,异常处理完毕,继续执行代码。

    场景二: 如果执行try语句时发生异常,且没有匹配的except子句,异常将被递交到上层的try或是程序的最上层,到此结束程序,打印错误信息。

    场景三: 如果在try子句执行时没有发生异常,Python将继续执行代码语句。

    当我们了解了异常捕获的原理后在来看下之前的TypeError报错如何解决,字面意思类型错误,整型无法与字符串进行比较,但实际上在此之前我们就已经对变量age进行了处理,但因为捕获到了try的异常,执行了第一个匹配try的except子句,而子句又代替异常的语句,故此这里的类型转换就失效了,再次进行程序的运行就会出现类型错误,解决这个办法也很简单,只需要把判断语句也放在try中。

    当判断语句放到try中就稍微改变了一点点,如果没有捕获异常,程序照常执行,判断会生效,如果捕获到了异常,那么会直接跳转到except执行输出,提示您的年龄非法,就不会在有判断的逻辑,因此也不会在出现TypeError的错误了,顺带一提,这就是我们常见的开发Bug “买一送一” ,二次修改的代码如下:

    # 程序仍然有可优化的地方,仅展示try.. except语句的使用方式print("------------------- 欢迎来到报名注册系统 -------------------")age = (input("请输入您的年龄:")) try:    age = int(age)    if age < 18:        print("很遗憾,您暂时不满足注册条件")    else:        print("恭喜您符合注册条件")except:    print("您的年龄输入非法,请重新运行本程序")

    Python自动化测试之异常处理机制怎么实现

    Python自动化测试之异常处理机制怎么实现

    Python自动化测试之异常处理机制怎么实现

    2.4 特定异常捕获

    特定异常捕获顾名思义就是针对某一个出现的特定异常进行捕获,例如我们所遇到的ValueError,如果你捕获的是其他异常类型,那么在代码执行时碰到了ValueError仍然会出现报错:

    print("------------------- 欢迎来到报名注册系统 -------------------")age = (input("请输入您的年龄:")) try:    age = int(age)    if age < 18:        print("很遗憾,您暂时不满足注册条件")    else:        print("恭喜您符合注册条件")# 这里进行捕获的异常类型是IndexError,非ValueError,最后的结果仍然会报错,因为没有成功捕获except IndexError:    print("您的年龄输入非法,请重新运行本程序")

    Python自动化测试之异常处理机制怎么实现

    当捕获的类型错误时,仍然会弹出报错终止程序运行,好比一个人酒驾,那么就应该由交警处理而不是民政局的人处理,因为那不是它的职责,异常捕获还要讲究对口,如下代码所示,如果设置成ValueError就能够成功进行捕获,就好比交警处理了酒驾一样,完美解决:

    print("------------------- 欢迎来到报名注册系统 -------------------")age = (input("请输入您的年龄:")) try:    age = int(age)    if age < 18:        print("很遗憾,您暂时不满足注册条件")    else:        print("恭喜您符合注册条件")except ValueError:    print("您的年龄输入非法,请重新运行本程序")

    Python自动化测试之异常处理机制怎么实现

    2.5 异常捕获的处理

    刚刚我们举了一个例子,当异常捕获为IndexError时,运行程序后仍然会出现ValueError的错误,但我们不设置直接使用except时反而能直接捕获,那我们还要设置它做什么呢?想必有部分同学心中已经会产生这样的疑问了。

    except可以理解为万能警察,万能捕手,它可以捕获所有的异常类型(极少数无法直接捕获),而特定的异常捕获只能捕获特定出现的异常情况,我们之所以还要使用,是因为它是专门捕获一种类型的,好比一个人有皮肤问题,那么肯定是挂皮肤科门诊要比急诊科的医生要更加专业,正所谓术业有专攻。

    except因为是万能捕手,所以它在抓获异常后的处理方式是一样的,好比感冒和心脏病发作两种症状,都是同样的对待方式显然是不合理的,那么这个时候就会由特定的“医生” (特定捕获) 进行对应的处理方式。

    目前常见的一些报错有:ValueError、TypeError、IndexError等等,那么在整个自动化测试的过程中,势必会遇到很多其他的报错,当我们不清楚其他报错的情况下如何进行异常捕获呢?两种方式,第一种是错过一次就记得了,好比一开始进行编程的小伙伴们,谁也不知道会遇到ValueError一样,当碰到过一次后,下一次就会特别注意这个事情,提前做一个捕获,俗称踩坑。那另外一种方式就是在末尾继续添加except,万能捕手我们也留着,这样当特定捕获没有捕获到异常但程序出现了异常时,except就会进行捕获:

    print("------------------- 欢迎来到报名注册系统 -------------------")age = (input("请输入您的年龄:")) try:    age = int(age)    if age < 18:        print("很遗憾,您暂时不满足注册条件")    else:        print("恭喜您符合注册条件")# 这里会报错ValueError,因为捕获的类型是IndexError,很明显无法进行ValueError异常捕获,那么我们可以在添加一个万能捕手except来进行捕获except IndexError:    print("您的年龄输入非法,请重新运行本程序")# 在下面可以在进行一个except的添加:except:    print("万能捕手在此,束手就擒吧!")

    Python自动化测试之异常处理机制怎么实现

    2.6 except、Exception与BaseException

    except我们知道了是万能捕手,但其实它的身份是Exception,Python默认帮我们省略了,实际上它是这样的:

    except Exception:    print("万能捕手在此,束手就擒吧!")

    except与except Exception完全等价,日常的编写时可加可不加,依据个人习惯和喜好决定即可。而BaseException是Exception的父类,作为子类的Exception无法截获父类BaseException类型的错误。

    BaseException: 包含所有built-in exceptions

    Exception: 不包含所有的built-in exceptions,只包含built-in, non-system-exiting exceptions,像SystemExit类型的exception就不包含在其中。Python所有的错误都是从BaseException类派生的

    2.7 finally用法

    finally的作用是无论except是否成功捕获到了对应的异常,均需要执行finally下的代码:

    """参考如下代码:打开了love.txt这个文件,进行了阅读,又想写入一点东西,但现在是只读的模式,无法进行内容写入,故此会报错io.UnsupportedOperation虽然没有写入成功,但是这个文件是成功读取了的,那么在文件的章节中提到过,如果打开了一个文件要记得关闭,否则其他人无法使用所以在finally这里我们就可以加上f.close(),代表着无论是否有捕捉到异常,最后我都要关闭这个文件,以确保其他人能够正常使用该文件""" import io try:    f = open("love.txt", encoding="utf-8", mode="r")    f.read()    f.write("随便写点~")except io.UnsupportedOperation:    print("抓的就是你这个io.UnsupportedOperation报错")finally:    # finally的作用是无论except是否成功捕获到了对应的异常,均需要执行finally下的代码    f.close()

    2.8 异常信息的打印输出

    虽然我们能够捕获异常,但我们肯定要了解到底是什么异常,在捕获到一个异常时我们可以进行异常信息的打印:

    print("------------------- 欢迎来到报名注册系统 -------------------")age = (input("请输入您的年龄:")) try:    age = int(age)    if age < 18:        print("很遗憾,您暂时不满足注册条件")    else:        print("恭喜您符合注册条件")# 这里会报错ValueError,捕获的是IndexError,很明显无法进行异常捕获,那么我们可以在添加一个万能捕手except来进行捕获except IndexError as error:    print("您的年龄输入非法,请重新运行本程序")# 在这里加一个as,后面接一个变量,然后进行变量打印即可,当出现对应的异常时就会打印对应异常的信息except Exception as error:    print("万能捕手在此,束手就擒吧!", f"已捕获异常:{error}")

    Python自动化测试之异常处理机制怎么实现

    刚刚有提到except与except Exception是等价的,但是如果想使用as必须要使用后者,这是语法规定:

    # 正确用法,在捕获类型后加as 变量except Exception as error:    print("万能捕手在此,束手就擒吧!", f"已捕获异常:{error}") # 错误的用法,不符合语法规则except as error:    print("万能捕手在此,束手就擒吧!", f"已捕获异常:{error}")

    到此,关于“Python自动化测试之异常处理机制怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Python自动化测试之异常处理机制怎么实现

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Python自动化测试之异常处理机制怎么实现

    这篇文章主要介绍“Python自动化测试之异常处理机制怎么实现”,在日常操作中,相信很多人在Python自动化测试之异常处理机制怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python自动化测试之异
    2023-07-02

    Python怎么实现自动化测试

    本篇文章为大家展示了Python怎么实现自动化测试,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码
    2023-06-14

    python+pytest自动化测试封装怎么实现

    本篇内容介绍了“python+pytest自动化测试封装怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!例如单个接口的请求代码如下:i
    2023-07-02

    教你怎么用python selenium实现自动化测试

    一、安装selenium 打开命令控制符输入:pip install -U selenium 火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能 Selenium IDE 是嵌入到Firefox 浏览器
    2022-06-02

    Python+Requests+PyTest+Excel+Allure接口自动化测试怎么实现

    本篇内容主要讲解“Python+Requests+PyTest+Excel+Allure接口自动化测试怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python+Requests+PyT
    2023-07-05

    怎么用Python实现数据驱动的接口自动化测试

    这篇文章主要讲解了“怎么用Python实现数据驱动的接口自动化测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python实现数据驱动的接口自动化测试”吧!在接口测试的过程中,很多时
    2023-06-17

    Python中怎么实现自动化处理文件

    Python中怎么实现自动化处理文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。遍历一个目录中的文件如果有如下多个数据需要读取和处理:├── data │ ├── d
    2023-06-15

    怎么实现android应用程序自动化测试的批处理脚本

    本篇内容介绍了“怎么实现android应用程序自动化测试的批处理脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!测试平台:兼容androi
    2023-06-08

    python怎么实现微信收红包自动化测试脚本

    这篇文章主要介绍“python怎么实现微信收红包自动化测试脚本”,在日常操作中,相信很多人在python怎么实现微信收红包自动化测试脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python怎么实现微信收
    2023-06-20

    Python自动化办公之手机号提取怎么实现

    这篇文章主要介绍“Python自动化办公之手机号提取怎么实现”,在日常操作中,相信很多人在Python自动化办公之手机号提取怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python自动化办公之手机号
    2023-07-02

    python怎么使用dabl实现数据处理分析及ML自动化

    这篇文章主要讲解了“python怎么使用dabl实现数据处理分析及ML自动化”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么使用dabl实现数据处理分析及ML自动化”吧!dab
    2023-06-25

    怎么用Python实现自动化处理每月考勤缺卡数据

    这篇文章主要介绍“怎么用Python实现自动化处理每月考勤缺卡数据”,在日常操作中,相信很多人在怎么用Python实现自动化处理每月考勤缺卡数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python
    2023-07-02

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录