Python基础——异常处理与代码测试
2018-03-28 00:58
260 查看
Python基础——异常处理与代码测试
1. python IO
1.1 文件的打开与读取
在文件的处理例如文件的读写,很容易产生各种异常。在学习如何处理异常前,我们先来熟悉python对于文件IO的处理。with open('file_name.file') as m_file: text = m_file.read() print(text)
这里我们打开了文件
file_name.file,并读取了文件的所有内容,保存在变量
text中。而后我们只需要像利用处理字符串的方式处理文件内容即可。
1.2 逐行读取文件内容
如果我们并不希望一下子就读取所有的文件内容,而是逐行读取,那么我们使用下述代码:with open('file_name.file') as m_file: for line in m_file: print(line)
或者我们可以用列表来存储文件的各行:
with open('file_name.file') as m_file: lines = m_file.readlines()
这样,
lines中的每个元素为文件中的一行。
1.3 写入文件
在打开一个文件时,我们可以制定打开的方式,例如只读,写入,附加等。在只读模式下,我们无法对文件内容进行修改;写入模式下,我们将重写文件的内容;而附加模式下,我们将新的内容添加到文件的末尾。with open('file_name.file', 'w') as w_file: w_file.write('Hello World!') with open('new_file_name.file', 'a') as a_file: a_file.write('Hello World!')
我们可以看到上述代码在
open函数中多加了一个参数,这个参数表示文件的打开模式:
‘r’——只读模式
‘w’——写入模式
‘a’——附加模式
所以对于
w_file的操作,我们将清除文件中原有的内容,写入新的内容。而对于`a_file·的操作,我们将在文件的末尾添加新的内容。
2. 异常处理
异常指的是在程序运行过程中产生的错误,优秀的异常处理代码可以捕获程序运行中可能出现的异常,保证程序运行的过程中不会因为异常中断,使得程序具有很好的健壮性。异常的处理使用
try-except代码块完成,在
try代码块中运行可能出现异常的代码,在`except·代码块中处理异常。
2.1 异常的处理
异常的处理使用try-except-else代码块完成。我们就
ZeroDivisionError为例来展示异常处理的过程。
x = input('numerator:') y = input('denominator:') try: result = x/y except ZeroDivisionError: print("Error! Divided by 0!") else: print(result)
我们将可能出现异常的代码放在
try代码块中,然后使用
except语句捕获并处理异常,若没有发生异常,则执行
else代码块中的内容。
2.2 常见的异常
除了上述的ZeroDivisionError异常外,常见的异常还包括
FileNotFoundError异常,这个异常在尝试读取文件但是文件不存在时发生,
3. 代码测试
有时候我们需要对代码进行测试,这里我们需要导入unittest模块中的代码测试工具。其中,单元测试可用于测试函数的某个方面是否符合要求,而全覆盖式测试将全面测试函数的各种使用方式。
为了测试一个函数,我们需要导入
unittest模块,并且继承
unittest.TestCase类:
import unittest class FuncTestCase(unittest.TestCase): """测试函数func""" def test_func(self): """判断是否有正确的返回""" result = func(input) self.assertEqual(result, correct_result) unittest.main()
unittest提供了一个很好的用于测试函数的框架,我们运行
unittest.main时,
FuncTestCase中所有
test_打头的函数都将被运行,并且通过断言方法
assertEqual返回是否通过测试。常用的断言方法不光有
assertEqual,其他的断言方法如下:
asserEqual(a, b)
assertNotEqual(a, b)
assertTrue(a)
assertFalse(a)
assertIn(a, list)
assertNotIn(a, list)
除了静态方法外,我们还可以对类方法进行测试。为了避免在每一个测试单元都初始化类,可以在
unittest.TestCase类的子类中,继承
setUp()函数,将要测试的类的初始化语句放在其中,则可以在每一个测试单元直接调用这个类的实例。
相关文章推荐
- Python基础-文档测试(自动执行注释中的代码)
- zookeeper集群的python代码测试
- Python 爬虫基础 异常处理
- vim python自动补全方法 分类: ubuntu python基础学习 虚拟机 测试 2013-07-05 15:37 603人阅读 评论(0) 收藏
- 不一样的Hello Wold 测试你的Java基础 顺便说下此代码执行原理
- Python基础教程代码与注释P46 3.3 字符串格式化:完整版 3.4 字符串方法
- 【代码学习】PYTHON 异常处理
- Python基础(六)——重用代码:函数、模块、方法
- python中的sqlalchemy ORM学习测试代码!
- 【Python学习】python学习手册--第二十二章 模块代码编写基础
- 测试Python代码
- Python基础教程代码与注释P41 2.4 元组:不可变序列
- 教你在Python中用Scikit生成测试数据集(附代码、学习资料)
- Python常用辅助安全测试6个代码例子
- python基础2 (函数,模块,文件I/O,异常处理)
- Python常用辅助安全测试6个代码例子
- Python基础教程代码与注释P26 2.1 序列概览
- python基础1(自学代码记录)
- python基础-异常处理
- [置顶] Python在线爆破邮箱账号密码测试代码(亲测可用)