当前位置:文档之家› Python专题——异常和工具

Python专题——异常和工具

Python专题——异常和工具
Python专题——异常和工具

1.异常基础

try/except:捕捉由python或程序员引起的异常并恢复。

try/finally:无论异常是否发生,执行清理语句

raise:手动在代码中触发异常

assert:有条件的在代码中触发异常

with/as:在python2.6和后续版本中实现环境管理器

1.1为什么使用异常?

异常处理对于错误处理、终止动作和事件通知有用。它可以简化特殊情况的处理,并且可以用来实现替代的控制流程。一般来讲,异常处理还可以减少程序所需的检测错误代码的数量,因为所有的错误都由处理器来过滤,你可能不需要测试每个操作的输出。

1.2异常的角色

错误处理

事件通知

特殊情况处理

终止行为

非常规控制流程

2.异常处理

2.1默认异常处理器

如果代码没有刻意的捕捉代码异常,它将会一直向上返回程序顶层,并启用默认的异常处理器:就是打印标准出错消息。这些消息引发的异常还有堆栈跟踪:也就是异常发生时激活的程序行和函数清单。

def fetcher(obj, index):

return obj[index]

x = 'spam'

fetcher(x, 4)

output:

Traceback (most recent call last):

File "C:\E\workspace\PythonLearning\chapter17\exc.py", line 6, in fetcher(x, 4)

File "C:\E\workspace\PythonLearning\chapter17\exc.py", line 2, in fetcher

return obj[index]

IndexError: string index out of range

任何未捕获的异常都流入默认的异常处理器,python在程序的最顶端提供它。这个处理器打印类似的出错消息,并且退出程序。

2.2捕获异常:try/except/else语句

try:

fetcher(x, 4)

except IndexError:

print'got exception'

try首行底下的代码块代表此语句的主要动作:试着执行程序代码。Except子句定义了try代码块内引发的异常的处理器,而else子句则是提供没发生异常时要执行的处理器。

●如果try代码块语句执行时的确发生了异常,python就跳回try,执行第一个符合引发

异常的except子句下面的语句。当except代码块执行后(除非except代码块又引发了另一异常),控制权就会到整个try语句后继续执行。

●如果异常发生在try代码块内,没有符合的except子句,异常就会向上传递到程序中的

之前进入的try中,或者如果它是第一条这样的语句,就传递到这个进程的顶层(这回使Python终止这个程序并打印默认的出错消息)。

●如果try首行底下执行的语句没有发生异常,python就会执行else下的语句(如果有的

话),控制权会在整个try语句下继续。

2.2.1Try语句分句

Python3.0引入了一个替代方案,捕获一个名为Exception的异常几乎与一个空的except 具有相同的效果。

2.2.2Try/else分句

如果没有else,是无法知道控制流程(没有设置和检查布尔标志)是否已经通过try语句,因为没有异常引发或者因为异常发生了且已被处理过了。

2.3终止行为:try/finally语句

Try/finally组合,可以定义一定会在最后执行时的收尾行为,无论try代码块中是否发生了异常,finally代码块都会执行。

def after():

try:

fetcher(x, 4)

finally:

print'after fetch'

print'after try ?'

Output:

after fetch

Traceback (most recent call last):

File "C:\E\workspace\PythonLearning\chapter17\exc.py", line 13, in after()

File "C:\E\workspace\PythonLearning\chapter17\exc.py", line 8, in after

fetcher(x, 4)

File "C:\E\workspace\PythonLearning\chapter17\exc.py", line 3, in fetcher

return obj[index]

IndexError: string index out of range

Try/except的组合可用于捕捉异常从中恢复,而try/finally的组合则很方便,可以确保无论try代码块内的代码是否发生了任何异常,终止行为一定会运行。

●如果try代码块运行时没有异常发生,python会跳至执行finally代码块,然后在整个try

语句后继续执行下去。

●如果try代码块运行时有异常发生,python依然会回来运行finally代码块,但是接着会

把异常向上传递到较高的try语句或顶层默认处理器。程序不会再try语句下继续执行。

Finally子句的用途:指明一定要执行的“清理”动作,无论异常发生了没有。

class MyError(Exception):

pass

def stuff(file):

raise MyError()

file = open('data', 'w')

try:

stuff(file)

finally:

file.close()

print'not reached'

2.4统一try/except/finally语句

●如果该程序代码引发异常,那么所有except代码块都会逐一测试,寻找与抛出异常相

符的语句。如果没有引发异常则会执行else-block。

●无论之前发生什么,当main-action代码块完成时,而任何引发的异常都已处理后,

finally-block就会执行。即使异常处理器或者else-block内有错误发生而引起了新的异常,finally-block内的程序代码依然会执行。

●当finally-block执行时,如果异常还存在,就会在finally-block代码块执行后继续传递,

而控制权会跳到程序其他地方(到另一个try,或者默认的顶层处理器)。如果finally执行时,没有异常处于激活状态,控制权就会在整个try语句之后继续下去。

sep = '-'*32 + '\n'

print sep + 'EXCEPTION RAISED AND CAUGHT'

try:

x = 'spam'[99]

except IndexError:

print'except run'

finally:

print'finally run'

print'after run'

print sep + 'NO EXCEPTION RAISED'

try:

x = 'spam'[3]

except IndexError:

print'except run'

finally:

print'finally run'

print'after run'

print sep + 'NO EXCEPTION RAISED,WITH ELSE' try:

x = 'spam'[3]

except IndexError:

print'except run'

else:

print'else run'

finally:

print'finally run'

print'after run'

print sep + 'EXCEPTION RAISED BUT NOT CAUGHT' try:

x = 1/0

except IndexError:

print'except run'

finally:

print'finally run'

print'after run'

Output:

--------------------------------

EXCEPTION RAISED AND CAUGHT

except run

finally run

after run

--------------------------------

NO EXCEPTION RAISED

finally run

after run

--------------------------------

NO EXCEPTION RAISED,WITH ELSE

else run

finally run

after run

--------------------------------

EXCEPTION RAISED BUT NOT CAUGHT

finally run

Traceback (most recent call last):

File "C:\E\workspace\PythonLearning\chapter17\mergedexc.py", line 33, in

x = 1/0

ZeroDivisionError: integer division or modulo by zero

2.5Raise语句

raise

raise

raise

Raise语句的组成是:raise关键字,后面跟着可选的要引发的类或者类的实例,raise语句不包括异常名称和额外数据值时,就是重新引发当前异常。

2.6Assert语句

Assert ,

Assert可视为条件式的raise语句,如果test为假,python就会引发AssertionError异常:data项是异常的额外数据。

Assert几乎都是用来收集用户定义的约束条件,而不是捕捉内在程序设计错误。2.7With/as环境管理器

With语句的基本格式:

With expression [as variable]:

With-block

With/as语句的设计,是为了让必须在程序代码块周围发生的启动和终止活动一定会发生。和try/finally语句(无论异常是否发生,其离开动作都会执行)类似,但是with/as有更丰富的对象协议,可以定义进入和离开的动作。

2.7.1环境管理协议

With语句实际的工作方式:

1.计算表达式,所得到的对象称为环境管理器,它必须有__enter__和__exit__方法。

2.环境管理器的__enter__方法会被调用。如果as子句存在,其返回值会赋值给As子句中的变量,否则丢弃。

3.代码块中嵌套的代码会执行。

4.如果with代码块引发异常,__exit__(type, value, traceback)方法就会被调用。

5.如果with代码块没有引发异常,__exit__方法依然会被调用,其type、value以及traceback参数会以None传递。

class TraceBlock:

def message(self, arg):

print'running', arg

def__enter__(self):

print'starting with block'

return self

def__exit__(self, exc_type,exc_value, exc_tb):

if exc_type isNone:

print'exited normally\n'

else:

print'raise an exception!', exc_type

returnFalse

with TraceBlock() as action:

action.message('test 1')

print'reached'

with TraceBlock() as action:

action.message('test 2')

raise TypeError

print'not reached'

Output:

Traceback (most recent call last):

File "C:\E\workspace\PythonLearning\chapter17\withas.py", line 20, in raise TypeError

TypeError

starting with block

running test 1

reached

exited normally

starting with block

running test 2

raise an exception!

3.异常对象

内置异常和用户定义的异常都可以通过类实例对象来表示。基于类的异常有如下特点:●提供类型分类,对今后的修改有更好的支持。

●它们附加了状态信息

●它们支持继承

3.1基于类的异常

Python2.6和python3.0都要求异常通过类来定义。此外python3.0要求异常类派生自BaseException内置异常超类,而不管直接还是间接。

字符串异常在python2.6和python3.0之中已经删除,因为它们都是通过简单的对象标识来匹配,所以它们没有直接的方式来把异常组织到更为灵活的领域。

class General(Exception):pass

class Specific1(General):pass

class Specific2(General):pass

def raise0():

X = General()

raise X

def raise1():

X = Specific1()

raise X

def raise2():

X = Specific2()

raise X

for func in (raise0, raise1, raise2):

try:

func()

except General:

import sys

print'caught:', sys.exc_info()

Output:

caught: (, General(),

0x00000000026E32C8>)

caught: (, Specific1(),

0x00000000026E3348>)

caught: (, Specific2(), )

3.2为什么使用类异常?

Mathlib.py

class NumErr(Exception):pass

class Divzero(NumErr):pass

class Oflow(NumErr):pass

...

def func():

...

raise Divzero()

Client.py

import mathlib

...

try:

mathlib.func(...)

except mathlib.NumErr:

...report and recover...

3.3内置Exception类

BaseException:异常的顶级根类。这个类不能当作是由用户定义的类直接继承。Exception:与应用相关的异常的顶层根超类。

ArithmeticError:所有数值错误的超类。

OverflowError:识别特定的数值错误的子类。

Exception是python中所有应用程序级别的异常的超类,通常可以使用它作为一个全捕获。

3.3.1默认打印和状态

内置异常还提供了默认打印显示和状态保持,传递给异常类的任何构造函数参数都会保存在实例的args元组属性中,并且打印该实例的时候自动显示。

>>> raise IndexError

Traceback (most recent call last):

File "", line 1, in

raise IndexError

IndexError

>>> raise IndexError('spam')

Traceback (most recent call last):

File "", line 1, in

raise IndexError('spam')

IndexError: spam

>>> I = IndexError('spam')

>>> I.args

('spam',)

>>>

class E(Exception):pass

try:

raise E('spam', 'eggs', 'ham')

except E as X:

print X,X.args

Output:

('spam', 'eggs', 'ham') ('spam', 'eggs', 'ham')

3.4定制打印显示

class MyBad(Exception):

def__str__(self):

return"Always look on the bright side of life ..."

try:

raise MyBad()

except MyBad as X:

print X

raise MyBad()

Output:

Traceback (most recent call last):

File "C:\E\workspace\PythonLearning\chapter17\mathlib.py", line 10, in

raise MyBad()

__main__.MyBad: Always look on the bright side of life ...

Always look on the bright side of life ...

3.5定制数据和行为

3.5.1提供异常细节

class FormatError(Exception):

def__init__(self, line, file):

self.line = line

self.file = file

def parser():

raise FormatError(42, file='spam.txt')

try:

parser()

except FormatError as X:

print"Error at", X.file, X.line

print X.args

Output:

Error at spam.txt 42

() #默认构造函数被重写

3.5.2提供异常方法

class FormatError(Exception):

logfile = 'formaterror.txt'

def__init__(self, line, file):

self.line = line

self.file = file

def logerror(self):

log = open(self.logfile, 'a')

print>>log, 'Error at {0} {1}'.format(self.file,self.line)

def parser():

raise FormatError(42, file='spam.txt')

try:

parser()

except FormatError as X:

print"Error at", X.file, X.line

print X.args

X.logerror()

Output:

Error at spam.txt 42

()

4.异常的设计

4.1嵌套异常处理器

4.2 异常的习惯用法

4.2.1 异常不总是错误

●内置的input函数在每次调用时,则是从标准输入串流sys.stdin读取一行文字,并且在

文件末尾时引发内置的EOFError。

●Input的空字符串是指空行。除了EOFError的名称,这个异常在这种环境下也只是信号

而已,不是错误。

调用sys.exit()并在键盘上按下ctrl-C,会分别引发SystemExit和KeyboardInterput。4.2.2 函数信号条件和raise

class Found(Exception):pass

def searcher():

ifTrue:

raise Found()

else:

return

try:

searcher()

except Found:

print"success"

else:

print"failure"

这种代码结构,可用于任何无法返回经是值以表明成功或失败函数。异常提供一种方式来传达结果信号,而不是使用返回值。

4.2.3 关闭文件和服务器连接

异常处理工具通常用来确保系统资源终结,不管在处理过程中是否发生了错误。

确保一个代码块的终止操作的更通用和显式的方式式try/finally语句:

myfile = open(r'C:\misc\script', 'w')

try:

...process myfile...

finally:

myfile.close()

With/as语句运行的环境管理器:

with open(r'C:\misc\script', 'w') as myfile:

...process myfile...

4.2.4 在try外进行调试

try:

...run program...

except:

import sys

print"uncaught!", sys.exc_info()[0], sys.exc_info()[1]

4.2.5 运行进程中的测试

import sys

log = open('testlog', 'a')

from testapi importimport moreTests, runNextTest, testName

def testdriver():

while moreTests():

try:

runNextTest()

except:

print'FAILED', testName(), sys.exc_info()[:2]

else:

print'PASSED', testName()

testdriver()

4.2.6 关于sys.exc_info()

Sys.exc_info()允许一个异常处理器获取对最近引发的异常的访问。如果没有处理器正在处理,就返回了三个None值的元组。否则,将会返回(type、value和traceback)。

●Type是正在处理的异常的异常类型

●Value是引发的异常的异常类实例

●Traceback是一个traceback对象,代表异常最初发生时所调用的堆栈。

l = [1,2]

try:

l[3]

except:

import sys

print sys.exc_info()

Output:

(, IndexError('list index out of range',), )

Python文件和异常处理

6. 异常和文件处理- Dive Into Python 6.1 异常处理. Python的异常用 try except finally 来处理. 并且except后还可以跟else . 引发异常用raise 如果抛出的异常没有被处理. 在Python IDE中是显示一些红色的信息. 在真正的Python程序运行时. 会导致程序终止. 在以前我们已经见到过一下几种异常: 在Dictionary 中如果使用的key 不存在. 会引发KeyError异常.如: >>> d = {"a":1, "b":"abc"} >>> d["c"] Traceback (most recent call last): File "", line 1, in KeyError: 'c' 搜索列表中不存在的值. 将引发ValueError异常.如: >>> li = [1,2] >>> li.index(3) Traceback (most recent call last): File "", line 1, in ValueError: list.index(x): x not in list 对应的. 若用下标来引用列表中的元素. 若下标出界. 会产生IndexError异常.如: >>> li[2] Traceback (most recent call last): File "", line 1, in IndexError: list index out of range 调用不存在的方法. 会引发AttributeError异常. 引用不存在的变量. 引发NameError异常. 未强制转化就混用数据类型. 引发TypeError异常. 文件操作错误引发的IOError.如: try: fsock = open("/notthere") except IOError: print "The file dose not exits..." else: print "open the file." print "this line will always print" 注意上边的代码中: open是一个内置函数. 用来打开文件. 并返回一个文件对象. try except 后边可以跟else 语句. 当没有捕捉到指定的异常时. 执行else 语句. 导入一个模块时. 若模块不存在. 会引发ImportError异常. 还可以定义自己的异常类. 定义时让它继承内置的Exception类. 然后在需要抛出异常时用raise抛出.

软件测试工具

摘要 随着信息科技的发展。数字科技的进步。人们对所使用的软件要求越来越严格,许多大型的软件公司对自己严发出来的软件要求也越来越严格,为了解决其中的BUG,软件测试行业开始在国内崛起。新兴的科技技术,带领着软件业开始飞速发展,产品趋于完美化,智能化,易用程度也大大的提高。 但是软件测试行业的形成是因为什么呢?许多人只知道软件测试,但是不知道其根本,它的源头是什么,它是怎么发展衍变的? 本文在探讨软件测试技术的基础上,详细介绍了软件测试的发展,它的衍变过程。同时为大家介绍了多种系列的软件测试工具及它们各自的特点。为软件测试人员理清了测试思路,详细的划分了软件测试的种类。在阅读众多参考文献的情况下对于软件的安全的问题也进行了详细的阐述。最后详细介绍了一款基于主机的入侵检测的工具—PortSentry的安装,配置及使用方法。 关键词软件测试;发展;种类;工具

Abstract Along with information science and technology development.Digital science and technology progress.The people for the software request which uses are more and more strict, many large-scale software companies the software request which sends strictly to oneself more and more are also strict, in order to solve BUG, the software test profession starts in to rise domestically.The emerging technical technology, leads the software industry to start to develop rapidly, the product tends to the beautification, the intellectualization, easy to use the degree also big enhancement. But is the software test profession formation because of what? Many people only know the software test, but did not know its basic, what is its source, how is it develops evolves? This article in the discussion software test technology foundation, introduced in detail the software tests the development, it evolves the process.Meanwhile introduced many kinds of series software testing tool and they respective characteristic for everybody.Tested the personnel for the software to clear off the test mentality, the detailed division software has tested type.Has also carried on the detailed elaboration in the reading multitudinous reference situation regarding the software security question.Finally introduced one section in detail based on the main engine invasion examination tool - PortSentry installment, the disposition and the application method. Keywords software test,development,kind,tool

常用工具软件测试题及答案

一、判断题 1. Realone Player不支持多节目连续播放。(N) 2. 网际快车可以上传和下载文件。(N) 3. 天网防火墙的拦截功能是指数据包无法进入或出去。(Y) 4. SnagIt可以捕获DOS屏幕,RM电影和游戏等画面。(Y) 5. Adobe Acrobat Reader可以解压缩文件。(N) 6. 金山词霸2002支持Windows XP,但不支持office XP系统。(N) 7. 在用Ner-Burning Room刻录CD音乐时,若误将数据文件从本地资源管理器中拖入刻录机虚拟资源管理器中时,该文件将被添加到音乐CD中。(N) 8. Symantec Ghost 可以实现数据修复。(N) 9. Easy Recovery 可以恢复任何被从硬盘上删除的文件。(N) 10. Ctrem软件具有防发呆功能。(Y) 二.选择题(每小题2分,共40分) 1、下列不属于金山词霸所具有的功能的是:(C ) A、屏幕取词 B、词典查词 C、全文翻译 D、用户词典 2、东方快车提供了(C )种语言翻译。 A、1种 B、2种 C、3种 D、4种 3、:Vintual CD 中的Creat按钮的功能为(B ) A、编辑映像文件 B、创建光盘的映像文件 C、映像文件的显示方式 D、将映像文件插入虚拟光驱 4、下列哪一个软件属于光盘刻录软件(A ) A、Nero-Buring Room B:Virtual CD C: DAEMON Tools D:Iparmor 5、下列不属于媒体播放工具的是(D ) A、Winamp B、超级解霸 C、Realone Player D:WinRAR 6、下列媒体播放器可以自由截取单个画面或整段电影的是非曲直(B ) A、Winamp B、超级解霸 C、Realone Player D、音频解霸 7、下列哪一个不是网际快车为已下载的文件设置的缺省创建类别( D) A、软件 B、游戏和mp3 C、驱动程序 D、电影 8、CuteFTP具有网际快车不具备的功能是( A) A、上传文件 B、下载文件 C、断点续传 D、支持多线程下载 9、如果在天网防火墙的ICMP规则中输入( B)则表示任何类型代码都符合本规则。 A、254 B、255 C、256 D、253 10、Norton Antivirus的安全扫描功能包括(D ) ①自动防护②电子邮件扫描③禁止脚本④全面系统扫描 A、①②③ B、①②④ C、①③④ D、①②③④ 11、ACDSee不能对图片进行下列哪种操作(C ) A、浏览和编辑图像 B、图片格式转换 C、抓取图片 D、设置墙纸和幻灯片放映 12、SnagIt捕获的图片可被存为下列哪些格式(D ) ①BMP ②PCX ③TGA ④RSB A、①②③ B、①②④ C、①②③④ D、①② 13、WinRAR不可以解压下列哪些格式的文件( D)

Python中的异常

python的try语句有两种风格 一:种是处理异常(try/except/else) 二:种是无论是否发生异常都将执行最后的代码(try/finally) try/except/else风格 try: <语句>#运行别的代码 except<名字>: <语句>#如果在try部份引发了'name'异常 except<名字>,<数据>: <语句>#如果引发了'name'异常,获得附加的数据 else: <语句>#如果没有异常发生 try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。1、如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except 子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。 2、如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。 3、如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。 try/finally风格 try: <语句> finally: <语句>#退出try时总会执行 python总会执行finally子句,无论try子句执行时是否发一异常。 1、如果没有发生异常,python运行try子句,然后是finally子句,然后继续。 2、如果在try子句发生了异常,python就会回来执行finally子句,然后把异常递交给上层try,控制流不会通过整个try语句。 当你想无论是否发生异常都确保执行某些代码时,try/finally是有用的。 这个在打开文件的时候有用finally总是在最后close()文件

Python 错误和异常小结

原文链接https://www.doczj.com/doc/d51201855.html,/sinchb/article/details/8392827 事先说明哦,这不是一篇关于Python异常的全面介绍的文章,这只是在学习Python 异常后的一篇笔记式的记录和小结性质的文章。什么?你还不知道什么是异常,额... 1.Python异常类 Python是面向对象语言,所以程序抛出的异常也是类。常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不用Python了)。 python标准异常 异常名称描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 SystemExit Python 解释器请求退出 StandardError 所有的内建标准异常的基类 ArithmeticError 所有数值计算错误的基类 FloatingPointError 浮点计算错误 OverflowError 数值运算超出最大限制 ZeroDivisionError 除(或取模)零(所有数据类型)

AssertionError 断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类 IOError 输入/输出操作失败 OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 KeyboardInterrupt 用户中断执行(通常是输入^C) LookupError 无效数据查询的基类 IndexError 序列中没有没有此索引(index) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象(没有属性) UnboundLocalError 访问未初始化的本地变量 ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象RuntimeError 一般的运行时错误 NotImplementedError 尚未实现的方法 SyntaxError Python 语法错误 IndentationError 缩进错误 TabError Tab 和空格混用 SystemError 一般的解释器系统错误 TypeError 对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误

[示例文档1]软件测试计划书

[示例文档1]软件测试计划 书 标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

软件测试计划

1 概述 测试目的 说明本项目测试目的、预期达到的目标。 背景 说明本项目测试的背景。 参考资料 列出编写本计划及测试整个过程中所要参考的文件、资料。 2 测试基本内容 测试要点 测试要点应对以软件测试的以下信息进行具体描述。 测试方法:本次测试采用的测试方法(黑盒或白盒测试)。 测试类型:测试类型的说明。 测试手段:如手工测试、自动测试或手工与自动测试相结合。 采用手工与自动测试相结合的方式,说明不同手段所占比例。 采用自动测试,需详细说明选用的测试工具。 测试内容:根据软件项目的实际特点确定确认测试的测试内容。对部分软件除基本的功能测试外,可能还包括: 性能测试、安全性测试、极限测试、并发操作测试等。 测试环境 说明本次测试软件的运行与测试所需的硬件环境和软件环境。测试范围 确定本次测试范围。

测试工具 说明本次测试使用的测试工具,包括自编测试程序,并进行确认。 测试开始时间 指明本项目测试工作的开始时间。 测试结束时间 确认测试工作预计的完成时间。 3 实施计划 测试设计工作任务分解和人员安排 测试设计工作应包括对系统功能及专业知识的学习, 编写测试大纲、设计测试用例等工作。 时间安排 测试设计开始时间:测试设计工作预计开始时间。 测试设计结束时间:测试设计工作预计结束时间。 人员安排 列出预计参加本次测试设计工作的全部测试人员。 输出要求 测试设计工作的输出应包括《测试用例》、《测试记录表》、《测试报告》。 对系统功能及专业知识学习如有必要也要形成书面材料。 由测试小组负责规定组织相关的测试人员进行评审计划。

软件测试过程中的工具使用共9页文档

软件测试过程中的工具使用软件测试过程中的工具使用 作者:easylife来源:不详 摘要:软件测试是保证软件质量的重要手段,它在整个软件开发过程中 占据了将近一半的时间和资源。在软件测试过程中合理的引入测试工具,能够加快测试进度,提高测试质量,实现更快、更好的开发软件产品的目标。本文介绍了覆盖软件测试各个阶段的测试工具,说明了每一类工具所应用的测试阶段,以及它能发挥的作用。 Abstract:Software test is one measure to insure the quality of software,it costs half of time and resource in the whole process of development.If test tools can be used in the process,it would to improve the speed of test and the quality of test,It's probable to develop software rapidly and to produce high quality.In this document it introduces some software test tools for the different of test moment,it introduce the time for every kind of tools,but the function of the test tool. 关键字:软件测试工具;测试设计;静态分析;单元测试;功能测试; 性能测试;测试过程管理; Keywords:software test tool;test design;static analysis; unit test;function test;performance test;test process management; 1、引言最近几年,软件测试在国内越来越受到重视,因为大家逐渐认识到了软件测试对于保证软件质量的重要性。随着对软件测试重视的提高,国内软件测试技术的发展也很快,逐渐从过去手工作坊式的测试向测试工程化的方向发展。 要真正实现软件测试的工程化,其基础之一就是要有一大批支持软件测 试工程化的工具。因此,软件测试工具对于实现软件测试的工程化来说至关重要。本文就从如何进一步提高软件测试质量和效率的角度出发,讨论测试工具在软件测试过程中的应用。 2、为什么要引入测试工具在测试过程中引入测试工具能给我们带来以下的好处。

软件自动化测试工具介绍--所有

软件自动化测试工具介绍 一、功能测试工具 1、QTP测试工具 全名 HP QUiCkTeSt ProfeSSional SoftWare ,最新的版本为HP QUiCkTeSt ProfeSSional 11.0 QTP是 quickteSt PrOfeSSiOnal 的简称,是一种自动测试工具。使用QTP的目 的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等 QUiCkTeSt针对的是GUl应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。其中包括:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。 2、WinRUnner MerCUry Interactive 公司的 WinRUnner是一种企业级的功能测试工具,用 于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRUnner能够有效地帮助测试人员对复杂的企 业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。 企业级应用可能包括 Web应用系统,ERP系统,CRM S统等等。这些系统在发布之前,升级之后都要经过测试,确保所有功能都能正常运行,没有任何错误。如何有效地测试不断升级更新且不同环境的应用系统,是每个公司都会面临的问题。 3、RatiOnal Robot 是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面IBM Rational TeSt Manager上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。 4、AdVentNet QEngine AdVentNet QEngine是一个应用广泛且独立于平台的自动化软件测试工具, 测试、 可用于Web功能Web性能测试、JaVa应用功能测试、JaVa APl测试、SoAP测试、回归测试和 JaVa

5类软件测试工具

目前主流的测试工具主要有以下5类: 1.负载压力测试工具 这类测试工具的主要目的是度量应用系统的可扩展性和性能,是一种预测系统行为和性能的自动化测试工具。在实施并发负载过程中,通过实时性能监测来确认和查找问题,并针对所发现问题对系统性能进行优化,确保应用的成功部署。负载压力测试工具能够对整个企业架构进行测试,通过这些测试,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 2.功能测试工具 通过自动录制、检测和回放用户的应用操作,将被测系统的输出记录同预先给定的标准结果比较,功能测试工具能够有效地帮助测试人员对复杂的企业级应用的不同发布版本的功能进行测试,提高测试人员的工作效率和质量。其主要目的是检测应用程序是否能够到预期的功能并正常运行。 3.白盒测试工具 白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级。根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接和生成可执行文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。动态测试工具一般采用“插桩”的方式,在代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。它与静态测试工具最大的不同是,动态测试工具要求被测系统实际运行。 4.测试管理工具 一般而言,测试管理工具对测试需求、测试计划、测试用例、测试实施进行管理,并且测试管理工具还包括对缺陷的跟踪管理。测试管理工具能让测试人员、开发人员或其他的IT 人员通过一个中央数据仓库,在不同地方就能交互信息。 5.测试辅助工具 这些工具本身并不执行测试,例如它们可以生成测试数据,为测试提供数据准备。 参加完“2005年IT测试技术研讨会”以后,谢常君对软件测试和网络测试的主流厂商和产品有了更全面的了解。不过最让他高兴的是结识了一批企业的代表和专家。 一个阳光明媚的下午,谢常君约上某位专家在一个咖啡馆会面。“非常谢谢你能前来,我这次约你出来是希望你可以给我一些专业的建议。”谢常君说,“我们公司近期可能需要采购一些测试工具,但是我们对此了解不多,希望你可以帮我们。”接下来,这位专家就首先从测试工具的分类开始讲起…… IT测试工具集锦 Radview TestView系列 Radview公司的TestView系列Web性能测试工具和WebLoad Analyzer性能分析工具,旨在测试Web应用和Web服务的功能、性能、程序漏洞、兼容性、稳定性和抗攻击性,并且能够在测试的同时分析问题原因和定位故障点。 整套Web性能测试和分析工具包含两个相对独立的子系统:Web性能测试子系统Web 性能分析子系统。其中Web性能测试子系统包含3个模块:TestView Manager、WebFT以及WebLoad。Web性能分析子系统只有WebLoad Analyzer。 左图表达了在一个完整的测试系统中,TestView Manager用来定制、管理各种测试活动;WebLoad模拟多个用户行为进行测试,所测试的是系统性能,容量,稳定性和抗攻击性;

Python 错误和异常小结

原文链接事先说明哦,这不是一篇关于Python异常的全面介绍的文章,这只是在学习Python异常后的一篇笔记式的记录和小结性质的文章。什么你还不知道什么是异常,额... 异常类 Python是面向对象语言,所以程序抛出的异常也是类。常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不用Python了)。 python标准异常

2.捕获异常 Python完整的捕获异常的语句有点像: 1.try: 2.try_suite 3.except Exception1,Exception2,...,Argument: 4.exception_suite 5....... #other exception block 6.else: 7.no_exceptions_detected_suite 8.finally: 9.always_execute_suite 额...是不是很复杂当然,当我们要捕获异常的时候,并不是必须要按照上面那种格式完全写下来,我们可以丢掉else语句,或者finally语句;甚至不要exception语句,而保留finally语句。额,晕了好吧,下面,我们就来一一说明啦。 语句 try_suite不消我说大家也知道,是我们需要进行捕获异常的代码。而except语句是关键,我们try捕获了代码段try_suite里的异常后,将交给except来处理。 try...except语句最简单的形式如下: 1.try: 2.try_suite 3.except: 4.exception block

主流软件自动化测试工具介绍

主流自动化测试工具介绍 一、功能测试工具 1、Selenium (浏览器自动化测试框架) Selenium[1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。据 Selenium 主页所说,与其他测试工具相比,使用 Selenium 的最大好处是: Selenium [2] 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。使用 Selenium 和在浏览器中运行测试还有很多其他好处。 下面是主要的两大好处: 通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。Selenium 的核心,也称browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本要么是用 HTML 的表布局编写的,要么是使用一种受支持的编程语言编写的。 2、QTP测试工具 全名HP QuickTest Professional software ,最新的版本为HP QuickTest Professional 11.0 QTP是quicktest Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等 QuickTest针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的

测试管理工具大全

测试管理工具大全 测试管理工具大全软件测试类工具现列举如下,并非百分百全面,仅供测试同行参考: 测试管理工具 厂商工具名称 * HP Quality Center (TestDirector) 备注:Mercury公司原主打产品TestDirector于2003年开始迁移到J2EE 平台,重构了整个软件的开发,因融入了Mercury BTO理念,继而重新命名为Quality Center,它是Mercury BAC平台的重要组成部分。2006年后是HP Quality Center。时至今日,仍然为业内最强大、使用最广泛的测试管理工具之一,可与QTP、Winrunner、Loadrunner等集成,也与MS Office、IBM Rational等产品集成。 * IBM Rational TestManager 备注:原Rational产品中专业对软件测试资源进行管理的强大工具。包括测试用例管理、测试执行管理、测试脚本和报告管理等。另外可与Robot结合做性能测试,更可以和RFT、RFP、CC、CQ等集成使用。 * IBM Rational Quality Manager 备注:IBM2008年推出的新产品,是完全可以与HP Quality Center媲美的软件测试管理工具。包括测试计划、工作流、任务跟踪和统计分析等功能。 * Micro Focus QADirector 备注:原Compuware公司产品,是业内强大的软件测试资源和过程管理工具,虽然市场不大,但是可以和IBM Rational TestManager比较,与原Compuware 产品集成紧密。 * Micro Focus SilkCentral Test Manager 备注:原Segue产品,被Borland收购后又被Micro Focus收购。是业内强大的软件测试资源和过程管理工具,可以和IBM Rational TestManager比较,与原Segue产品集成紧密。 * Parasoft ConcerTo

软件自动化测试工具介绍--全

软件自动化测试工具介绍-全 一、功能测试工具 1、QTP测试工具 全名HP QuickTest Professional software ,最新的版本为HP QuickTest Professional 11.0 QTP是quicktest Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等 QuickTest针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。其中包括:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。 2、WinRunner Mercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。 企业级应用可能包括Web应用系统,ERP系统,CRM系统等等。这些系统在发布之前,升级之后都要经过测试,确保所有功能都能正常运行,没有任何错误。如何有效地测试不断升级更新且不同环境的应用系统,是每个公司都会面临的问题。 3、Rational Robot 是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面IBM Rational Test Manager上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。 4、AdventNet QEngine AdventNet QEngine是一个应用广泛且独立于平台的自动化软件测试工具,可用于Web功能测试、web性能测试、Java应用功能测试、Java API测试、SOAP测试、回归测试和Java应

Python异常处理实例解读,Python中的断言

Python异常处理实例解读 #Python异常处理实例解读,Python中的断言 #断言是一个健全检查,可以在完成对程序的测试后打开或关闭。 #测试表达式,如果结果为false,则会引发异常。 #assert语句,assert Expression[, Arguments] #程序解读,测试输入值是否合适,表达式为false,Python会引发AssertionError异常。def test1(ti):#函数块以关键字def开头,后跟函数名和小括号(()) assert (ti > 0),"这个值不合适!"#如果表达式为false,Python会引发AssertionError异常。 return (ti+5)+32#语句return [expression]用于退出一个函数,可选地将一个表达式传回给调用者 print (test1(273))#ti=273测试输出 print (test1(-300))#ti=-300测试输出 运行结果! 310 Traceback (most recent call last): File "f:\张铁刚资源库\python\经验谈\103python异常处理实例解读\python异常处理实例解读.py", line 9, in print (test1(-300)) File "f:\张铁刚资源库\python\经验谈\103python异常处理实例解读\python异常处理实例解读.py", line 6, in test1 assert (ti > 0),"这个值不合适!" AssertionError: 这个值不合适! >>>

主流软件测试工具介绍

主流软件测试工具介绍 测试工具一般可分为白盒测试工具、黑盒测试工具、性能测试工具,另外还有用于测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)的工具,这些产品主要是MercuryInteractive(MI)、Segue、IBMRational、Compuware和Empirix等公司的产品,而MI公司的产品占了主流。 白盒测试工具 白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级,根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。 静态测试工具:直接对代码进行分析,不需要运行代码,也不需要对代码编译链接,生成可执行文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。静态测试工具的代表有:Telelogic公司的Logiscope软件;PR公司的PRQA软件。 动态测试工具:动态测试工具与静态测试工具不同,动态测试工具的一般采用"插桩"的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。其与静态测试工具最大的不同就是动态测试工具要求被测系统实际运行。动态测试工具的代表有:Compuware公司的DevPartner软件;Rational公司的Purify 系列等。 黑盒测试工具 黑盒测试工具适用于黑盒测试的场合,黑盒测试工具包括功能测试工具和性能测试工具。黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。黑盒测试工具可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。黑盒测试工具的代表有:Rational公司的TeamTest、Robot;Compuware公司的QACenter。 性能测试工具 专用于性能测试的工具包括有:Radview公司的WebLoad;Microsoft公司的WebStress等工具;针对数据库测试的TestBytes;对应用性能进行优化的EcoScope等工具。MercuryInteractive的LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。 测试管理工具 测试管理工具用于对测试进行管理。一般而言,测试管理工具对测试计划、测试用例、测试实施进行管理,并且,测试管理工具还包括对缺陷的跟踪管理。测试管理工具的代表有:Rational公司的Test Manager;Compureware公司的TrackRecord;Mercury Interactive公司的TestDirector等软件。 主要厂商及其测试工具如下表: Mercury Interactive Winrunner、loadrunner、TestDirector、Astra QuickTest Rational Rational Purify (测试时用,检查运行时内存错误) Rational Quantify (性能检测工具,查出系统瓶颈以便改进运行速度)Rational TestManager (测试管理) Robot (软件测试用,通过Script自动模拟输入输出) LoadTest

软件测试工具说明

软件测试工具说明 一、思维导图 开源测试管理工具:Bugfree、Bugzilla、TestLink、mantis 开源功能自动化测试工具:Watir、Selenium、MaxQ、WebInject 开源性能自动化测试工具:Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator [TestDirector]:企业级测试管理工具,也是业界第一个基于Web的

测试管理系统。 [Quality Center]:基于Web的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,包括指定测试需求、计划测试、执行测试和跟踪缺陷。 [QuickTest Professional]:用于创建功能和回归测试。[LoadRunner]:预测系统行为和性能的负载测试工具。 [其他工具与自动化测试框架]:Rational Functional Tester、Borland Silk系列工具、WinRunner、Robot等。 国内免费软件测试工具有:AutoRunner和TestCenter。 主流软件测试工具介绍 测试工具一般可分为白盒测试工具、黑盒测试工具、性能测试工具,另外还有用于测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)的工具,这些产品主要是MercuryInteractive(MI)、Segue、IBM Rational、 Compuware和Empirix等公司的产品,而MI公司的产品占了主流。 1、白盒测试工具 白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级,根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。 (1)静态测试工具:直接对代码进行分析,不需要运行代码,也不需要对代码编译链接,生成可执行文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型

常用软件测试工具简介

常用软件测试工具简介! 一、商业工具 工具名称 来源 类型 费用 功能概要 WinRunner Mercury公司 功能性测试收费昂贵 Winrunner 最主要的功能是自动重复执行某一固定的测 试过程,它以脚本的形式记录下手工测试的一系列操作, 在环境相同的情况下重放,检查其在相同的环境中有无异 常的现象或与实际结果不符的地方。可以减少由于人为因 素造成结果错误,同时也可以节省测试人员大量测试时间 和精力来做别的事情。功能模块主要包括:GUI map、检 查点、TSL 脚本编程、批量测试、数据驱动等几部分 LoadRunne r Mercury公司 性能与负载 压力 收费昂贵 LoadRunner? 是一种预测系统行为和性能的工业标准级 负载测试工具。通过以模拟上千万用户实施并发负载及实 时性能监测的方式来确认和查找问题,LoadRunner 能够 对整个企业架构进行测试。通过使用LoadRunner ,企业 能最大限度地缩短测试时间,优化性能和加速应用系统的 发布周期。LoadRunner 是一种适用于各种体系架构的自 动负载测试工具,它能预测系统行为并优化系统性能。 LoadRunner 的测试对象是整个企业的系统,它通过模拟 实际用户的操作行为和实行实时性能监测,来帮助您更快 的查找和发现问题。此外,还能支持广范的协议和技术, 为您的特殊环境提供特殊的解决方案。 QuickTest Pro Mercury公司 功能测试和 回归测试 收费昂贵 QTP是一个B/S系统的自动化功能测试的利器,软件程序 测试工具。Mercury的自动化功能测试软件QuickTest Professional ,可以覆盖绝大多数的软件开发技术,简 单高效,并具备测试用例可重用的特点。Mercury QuickTest Pro 是一款先进的自动化测试解决方案,用于 创建功能和回归测试。它自动捕获、验证和重放用户的交 互行为。 Mercury QuickTest Pro为每一个重要软件应用 和环境提供功能和回归测试自动化的行业最佳解决方案。

Python专题——异常和工具

1.异常基础 try/except:捕捉由python或程序员引起的异常并恢复。 try/finally:无论异常是否发生,执行清理语句 raise:手动在代码中触发异常 assert:有条件的在代码中触发异常 with/as:在python2.6和后续版本中实现环境管理器 1.1为什么使用异常? 异常处理对于错误处理、终止动作和事件通知有用。它可以简化特殊情况的处理,并且可以用来实现替代的控制流程。一般来讲,异常处理还可以减少程序所需的检测错误代码的数量,因为所有的错误都由处理器来过滤,你可能不需要测试每个操作的输出。 1.2异常的角色 错误处理 事件通知 特殊情况处理 终止行为 非常规控制流程 2.异常处理 2.1默认异常处理器 如果代码没有刻意的捕捉代码异常,它将会一直向上返回程序顶层,并启用默认的异常处理器:就是打印标准出错消息。这些消息引发的异常还有堆栈跟踪:也就是异常发生时激活的程序行和函数清单。 def fetcher(obj, index): return obj[index] x = 'spam' fetcher(x, 4) output: Traceback (most recent call last):

File "C:\E\workspace\PythonLearning\chapter17\exc.py", line 6, in fetcher(x, 4) File "C:\E\workspace\PythonLearning\chapter17\exc.py", line 2, in fetcher return obj[index] IndexError: string index out of range 任何未捕获的异常都流入默认的异常处理器,python在程序的最顶端提供它。这个处理器打印类似的出错消息,并且退出程序。 2.2捕获异常:try/except/else语句 try: fetcher(x, 4) except IndexError: print'got exception' try首行底下的代码块代表此语句的主要动作:试着执行程序代码。Except子句定义了try代码块内引发的异常的处理器,而else子句则是提供没发生异常时要执行的处理器。 ●如果try代码块语句执行时的确发生了异常,python就跳回try,执行第一个符合引发 异常的except子句下面的语句。当except代码块执行后(除非except代码块又引发了另一异常),控制权就会到整个try语句后继续执行。 ●如果异常发生在try代码块内,没有符合的except子句,异常就会向上传递到程序中的 之前进入的try中,或者如果它是第一条这样的语句,就传递到这个进程的顶层(这回使Python终止这个程序并打印默认的出错消息)。 ●如果try首行底下执行的语句没有发生异常,python就会执行else下的语句(如果有的 话),控制权会在整个try语句下继续。

相关主题
文本预览
相关文档 最新文档