首页 > 编程语言 >Selenium3自动化测试实战--第3章 Python基础2

Selenium3自动化测试实战--第3章 Python基础2

时间:2022-11-07 11:11:20浏览次数:34  
标签:name -- except try Python Selenium3 print 异常 msg

3.6 模组

模组,一般称为类库或模块。分为标准模块和第三方库。

3.6.1 调用模块

import time

from time import time, sleep

from time import *     # 不用每个函数加time,但不推荐这样做

from time import sleep as sys_sleep  # 如果导入的函数刚好与自己定义的重复,可以用as对导入函数重命名。

3.6.2 自定义模块--同目录调用

project1

  calculator.py

  test.py

calculator.py

def add(a,b):
    return a+b

test.py

from calculator import add    # 导入calculator文件中的add函数

print(add(4,5))

3.6.3 跨目录调用

project2

  module

    calculator.py

  test

    test.py

import sys
from os.path import dirname,abspath

project_path = dirname(dirname(abspath(__file__)))   # __file__用于获取文件所在的路径, dirname()嵌套使用
sys.path.append(project_path + "\\module")
from calculator import add

print(add(2,3))

3.6.4 编写自测代码

def add(a,b):
    return a + b

if __name__ == '__main__':   # 表示当模块被直接运行时,下面的代码块将被运行;当模块被其他程序文件调用时,下面模块不被运行
    # 自测代码
    c = add(3,5)
    print(c)

3.7 异常

Python用异常对象来表示异常情况。在遇到错误后,异常对象引发异常。如果异常对象并未被处理或捕捉到,则程序会用回溯(traceback)来终止程序。

3.7.1 认识异常

try except语句来捕捉并处理异常。

try:
    open("abc.txt",'r')
except BasException as msg:
    print(msg)

官网文档列出来的常见exception

https://docs.python.org/zh-cn/3/library/exceptions.html?highlight=baseexception#BaseException

Exception 所有内置的非系统退出类异常都派生自此类。所有用户自定义异常也应该派生自此类
AssertionError 当assert语句失败时将被引发
FileNotFoundError 是OSError的子类,将所请求的文件或目录不存在时将被引发
AttributeError 当属性引用或赋值失败时将被引发(当一个对象根本不支持属性引用或赋值时则将引发TypeError)
OSError 在一个系统函数返回系统相关的错误时将被引发,例如 文件未找到 或磁盘已满
NameError 当某个局部或全局名称未找到时将被引发
IndexError 当序列抽取超出范围时将被引发(如果指定索引不是整数则TypeError会被引发)
SyntaxError 当解析器遇到语法错误时引发。这可以发生在import语句对内置函数的调用,或读取原始脚本或标准输入的时候。
KeyboardInterrupt 当用户按下中断键(通常为control+c 或 delete)将被引发。该异常继承自BaseException以确保不会被处理Exception的代码意外捕获,这样可以避免退出解释器。(Exception会退出,BaseException不会?)
TypeError 当一个操作或函数被应用于类型不适当的对象时将被引发。传入参数的类型错误(要求int时传入list)应当导致TypeError,但传入参数的值错误(不要求范围之外)则应当导致 ValueError

3.7.2 更多异常用法

try:

except Error as msg:

else:       # 没有异常时执行

try:

except Error as msg:

finally:    # 不管是否有异常,都会被执行

try 工作原理是:(记得有面试会出这种问题!)

1 首先,执行try子句(try和except关键字之间的多行语句)

2 如果没有触发异常,则跳过except子句,执行后面的语句

3 如果在执行try子句时发生了异常,则跳过该子句中剩下的部分(该点需要注意)。如果异常的类型与except关键字后指定的异常相匹配,则会执行except子句,然后跳到try/except代码块之后继续执行。

4 如果发生的异常与except子句中指定的异常不匹配,则它会被传递到外部try语句中;如果没有找到处理程序,则它是一个未处理异常且执行将终止并输出如上所示的消息。

try:
    print('1')
    open('abc.txt','r')
    print("2")
except BaseException as msg:
    print("异常了!")
    print(msg)

print('3')

 

可见发生的异常与except子句指定的异常匹配

那如果将BaseException换成其它的异常,如TypeError

try:
    print('1')
    open('abc.txt','r')
    print("2")
except TypeError as msg:
    print("异常了!")
    print(msg)

print('3')

从结果可以看出:异常不匹配,except子句不再执行。然后传递到外部try语句中。但后面的是否找到处理程序(try原理第4步),是指异常的语句后面可能有try-except? 尝试一下。

def abc():
    try:
        print('1')
        open('abc.txt','r')
        print("2")
        try:
            abc()
        except FileNotFoundError as info:
            print(info)
            print('4')
    except TypeError as msg:
        print("异常了!")
        print(msg)

    print('3')

abc()

没什么区别啊。没弄明白第4步的 如果找到处理程序,和 没有找到处理程序,区别是什么。

3.7.3 抛出异常

def say_hello(name=None):
    if name is None:
        raise NameError('"your name" cannot be empty')
    else:
        print('hello, %s' %name)

say_hello()

从结果可见,确实抛出了异常,而且错误信息就是我们设置的语句:"your name" cannot be empty

那么NameError是固定的,还是可以随便起名么?

def say_hello(name=None):
    if name =='ssd':
        raise NameEMError('"your name" cannot be empty')
    else:
        print('hello, %s' %name)
        
say_hello()

  

从结果可见,NameError不能随便起名

书中这样写到: raise只能使用Python提供的异常类,如果想要raise使用自定义异常类,则自定义异常类需要继承Exception类。

但Python官网中关于自定义异常,尤其是如何继承Exception类,没有详细的描写,暂时放弃这块。

https://docs.python.org/zh-cn/3/tutorial/errors.html?highlight=raise#user-defined-exceptions

def say_hello(name=None):
    if name is None:
        raise NameError('"name" cannot be empty')
    elif name == 'sb':
        raise NameError('"name" contains not allowed word')
    else:
        print('hello, %s' %name)

say_hello('sb')

 

3.8 新手常犯的错误

1 要用4个空格或tab键进行缩进。但在一个语句体中不要混合使用空格和tab

2 大部分方法两边带的下画线是双下画线

3 项目不要都创建在Python的安装目录中

4 Python程序文件路径中,尽量避免出现中文或空格。可能导致部分编辑器无法运行。

4 创建的目录与文件名,不要与引用类库同名。

 

标签:name,--,except,try,Python,Selenium3,print,异常,msg
From: https://www.cnblogs.com/guohui2022/p/16864345.html

相关文章

  • 使用VS2019生成exe安装包
    1、安装工具包  2、在解决方案上右击,选择添加–>新建项目   3、查找setup模板,下一步并填写名称      4、进入文件系统设置主输出   ......
  • 汽车常识之动力系统简介
    前言在人生的道路上,从来没有全身而退,坐享其成,不劳而获一说。你不努力,就得出局。一、动力系统简介是给汽车提供驱动力的总要部件;包含发动机、电动机、发电机、动力电池......
  • 学习笔记-.net安全之ueditor远程下载分析
    0x00简介UEditor的.NET版本N年前爆出一个远程下载漏洞。0x01漏洞成因URL:http://192.168.110.129:520/gbk-net/net/controller.ashx?action=catchimage在POC中请......
  • vue中的key的作用原理
    https://blog.csdn.net/cun_king/article/details/120714227?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-12071422......
  • RTSP协议的处理
      一、ABLMediaServer的处理1、涉及的数据结构RtspProtectRtspProtectArray[MaxRtspProtectCount];intRtspProtectArrayOrder;structRtspFieldValue{cha......
  • 23种设计模式之设计模式介绍(一)
    1,设计模式概述1.1软件设计模式的产生背景"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境......
  • python项目 打包成 exe 可执行文件
    pipinstallpyinstaller或者condainstallpyinstaller pyinstaller安装完成,显示界面如下:  运行到项目的主文件目录,执行:(-iapple.ico是使用apple图片作为exe......
  • com.alibaba.excel.exception.ExcelGenerateException: Can not close IO
    线上出现一个导出excel的,报错:  第一想到的是数据量较大,查询超时,所以我把nginx超时时间设置长一点,还是不行。启动程序后,执行查询到了文件list,然后执行 EasyExcel.wr......
  • k8s实战入门——Pod
    PodPod是kubernetes集群进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于Pod中。Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。kubernet......
  • 学习笔记-.net安全
    0x00简介本章内容:1.xss2.csrf3.文件上传0x01XSS在asp.net中我们插入XSS代码经常会遇到一个错误ApotentiallydangerousRequest.Form这是因为在aspx文件头一般......