初学Python的学习笔记12----单元测试、文档测试和文件读写
2017-11-20 00:00
288 查看
摘要: 单元测试和文档测试~~~~感觉好烦
2)方法二:在命令行通过参数 -m unittest直接进行单元测试
"文档测试"(doctest)模块可以直接提取注释中的代码并执行测试。
doctest严格按照Python交互命令行的输入输出来判断测试结果是否正确,只有测试异常的时候,可以用...表示中间一大段烦人的输出。
例如:
2)读取文件的两种写法
a.第一种
b.第二种
3)读取文件的注意事项
例如:传入GBK编码的文件
2)遇到编码错误后的处理
1.单元测试
单元测试是用来对一个模块、一个函数或者一个类类进行正确性检验的测试工作(1)编写单元测试
# 编写一个Dict类,可以通过属性来访问 class Dict(object): def __init__(self, **kw): super().__init__(**kw) def __getattr__(self, key): try: return self[key] except KeyError: raise AttributeError(r"'Dict' object has no attribute '%s'" % key) def __setattr__(self, key, value): self[key] = value # 编写单元测试 import unittest from mydict import Dict class TestDict(unittest.TestCase): def test_init(self): d = Dict(a = 1, b = 'test') self.assertEqual(d.a, 1) # 最长用的断言:assertEqual() self.assertEqual(d.b, 'test') self.assertTrue(isinstance(d, dict)) def test_key(self): d = Dict() d['key'] = 'value' self.assertEqual(d.key, 'value') def test_attr(self): d = Dict() d.key = 'value' self.assertEqual('key' in d) self.assertEqual(d['key'], 'value') def test_keyerror(self): d = Dict() with self.assertRaises(KeyError): # 另一种断言:assertRaises(),期待抛出指定类型的Error value = d['empty'] def test_attrerror(self): d = Dict() with self.assertRaises(AttributeError): value = d.empty
(2) 运行单元测试
1)方法一:在写的单元测试的文件,如webtest.py的最后两行添加代码if __name__ == '__main__' unittest.main()
class Dict(object): def __init__(self, **kw): super().__init__(**kw) def __getattr__(self, key): try: return self[key] except KeyError: raise AttributeError(r"'Dict' object has no attribute '%s'" % key) def __setattr__(self, key, value): self[key] = value import unittest from mydict import Dict class TestDict(unittest.TestCase): def test_init(self): d = Dict(a = 1, b = 'test') self.assertEqual(d.a, 1) # 最长用的断言:assertEqual() self.assertEqual(d.b, 'test') self.assertTrue(isinstance(d, dict)) def test_key(self): d = Dict() d['key'] = 'value' self.assertEqual(d.key, 'value') def test_attr(self): d = Dict() d.key = 'value' self.assertEqual('key' in d) self.assertEqual(d['key'], 'value') def test_keyerror(self): d = Dict() with self.assertRaises(KeyError): # 另一种断言:assertRaises(),期待抛出指定类型的Error value = d['empty'] def test_attrerror(self): d = Dict() with self.assertRaises(AttributeError): value = d.empty if __name__ = '__main__' unittest.main()
2)方法二:在命令行通过参数 -m unittest直接进行单元测试
python -m unittest 1120-0.py
(3)setUp与tearDown
class Dict(object): def __init__(self, **kw): super().__init__(**kw) def __getattr__(self, key): try: return self[key] except KeyError: raise AttributeError(r"'Dict' object has no attribute '%s'" % key) def __setattr__(self, key, value): self[key] = value import unittest from mydict import Dict class TestDict(unittest.TestCase): def test_init(self): d = Dict(a = 1, b = 'test') self.assertEqual(d.a, 1) # 最长用的断言:assertEqual() self.assertEqual(d.b, 'test') self.assertTrue(isinstance(d, dict)) def test_key(self): d = Dict() d['key'] = 'value' self.assertEqual(d.key, 'value') def test_attr(self): d = Dict() d.key = 'value' self.assertEqual('key' in d) self.assertEqual(d['key'], 'value') def test_keyerror(self): d = Dict() with self.assertRaises(KeyError): # 另一种断言:assertRaises(),期待抛出指定类型的Error value = d['empty'] def test_attrerror(self): d = Dict() with self.assertRaises(AttributeError): value = d.empty # 添加setUp和tearDown def setUp(self): # 调用测试方法前被执行 print('setUp...') def tearDown(self): # 调用测试方法后被执行 print('tearDown...')
2.文档测试
在写注释的时候,添加这样的内容,告诉函数的调用者该函数的期望输入和输出def abs(n): ''' Function to get absolute value of number. Example: >>> abs(1) 1 >>> abs(-1) 1 >>> abs(0) 0 ''' return n if n >=0 else (-n)
"文档测试"(doctest)模块可以直接提取注释中的代码并执行测试。
doctest严格按照Python交互命令行的输入输出来判断测试结果是否正确,只有测试异常的时候,可以用...表示中间一大段烦人的输出。
例如:
class Dict(dict): ''' Simple dict but also support access as x.y style. >>>d1 = Dict() >>>d1['x'] = 100 >>>d1.x 100 >>>d1.y = 200 >>>d1['y'] 200 >>>d2 = Dict(a=1, b=2, c='3') >>>d2.c '3' >>>d2['empty'] Traceback(most recent call last): .... KetError:'empty' >>>d2.empty Traceback(most recent call last): ... AttributeError:'Dict' object has no attribute 'empty' ''' def __init__(self, **kw): super(Dict, self).__init__(**kw) def __getattr__(self, key): try: return self[key] except KeyError: raise Attribute(r"'Dict' object has no attribute '%s'" % key) def __setattr__(self, key, value): self[key] = value if __name__ == '__main__': import doctest doctest.testmod()
3.文件读写
(1)读文件
1)读取文件# 打开文件 f = open('文件名', '标示符') f = open('/Users/michael/test.txt', 'r') # 读取文件的全部内容,Python把内容读到内存 f.read() # 关闭文件 f.close()
2)读取文件的两种写法
a.第一种
try: f = open('/path/to/file', 'r') print(f.read()) finally: if f: f.close()
b.第二种
with open('/path/to/file', 'r') as f: print(f.read())
3)读取文件的注意事项
# 如果文件很小,read()一次性读取最方便 # 如果不能确定文件大小,反复调用read(size)比较保险 # 如果是配置文件,调用readlines()最方便 for line in f.readlines(): print(lines.strip())
(2).file-like Object
open()函数返回的这种有个read()方法的对象(3).二进制文件
f = open('/User/michael/test.jpg', 'rb') print f.read()
(4).字符编码
1)读取非UTF-8编码的文本文件例如:传入GBK编码的文件
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk') print f.read()
2)遇到编码错误后的处理
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
(5)写文件:和读文件操作差不多
# 'w':写文本文件 # 'wb':写二进制文件 with open('/Users/michael/test.txt', 'w') as f: f.write('Hello, world!')
相关文章推荐
- 【Python学习笔记】IO编程:文件读写
- 廖雪峰python学习笔记10&&11:容错处理与文件读写
- Python 学习笔记 (6)—— 读写文件
- Python学习笔记(二十三)文件读写
- Androidx学习笔记(12)-- 文件读写操作-在外部存储空间中读写文件
- Python学习笔记(五)——读写文件
- python学习笔记 IO 文件读写
- python 学习笔记 错误调试 文件读写
- 【python学习笔记】22:numpy文件读写和一些常量
- python学习笔记—— 用的测试文件
- Perl语言学习笔记 12 文件测试
- Python3学习笔记7-文件的读写
- Python学习笔记(3)--数据文件的读写
- python文件读写实例学习笔记
- 【Python学习笔记】文档测试
- Python学习笔记(18)-目录操作与文件读写
- Python学习笔记——文件读写
- python基础教程学习笔记---(6)文件读写
- 【python学习笔记】pthon3.x中的文件读写操作
- python学习笔记之编写readConfig读写配置文件