测试系列文章:
https://www.jianshu.com/nb/30319209
单元测试
需要引入unittest模块,并使用unittest.TestCase作为基类进行继承。
比如:已有自己的Dict类,import之后可以用以下方式验证:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import unittest
from mydict import Dict
class TestDict(unittest.TestCase):
def test_init(self): d = Dict(a=1, b='test') self.assertEquals(d.a, 1) self.assertEquals(d.b, 'test') self.assertTrue(isinstance(d, dict))
def test_key(self): d = Dict() d['key'] = 'value' self.assertEquals(d.key, 'value')
def test_attr(self): d = Dict() d.key = 'value' self.assertTrue('key' in d) self.assertEquals(d['key'], 'value')
def test_keyerror(self): d = Dict() with self.assertRaises(KeyError): value = d['empty']
def test_attrerror(self): d = Dict() with self.assertRaises(AttributeError): value = d.empty
|
之后可以用python -m unittest mydict_test来测试mydict_test文件中的所有测试内容。
在类中还可以使用setUp和tearDown两个类函数来指定在测试前后要执行的操作。每一个测试方法前后都会分别执行这两个函数。
文档测试
在编写注释的时候,写上类似这样的注释:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 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)
|
在模块被导入的时候,不会有影响;但是如果直接用python 执行该文件,就会自动进行测试,如果有错误就会显示出来,没有错误不会显示。
参考资料:
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140137128705556022982cfd844b38d050add8565dcb9000
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140137398003434356a2635da4a98b4d00670e8aadb2f000