python中有unittest的模块测试代码。使用这个模块可以看出测试是否通过,如果测试通过就说明代码达到预期。
在编写测试函数之前,先要知道一些函数。
导入unittest.TaseCase模块,有几种断言方式:
断言方式 | 用法 |
---|---|
assertEqual(a,b) | a == b |
assertNotEqual | a != b |
assertTrue(x) | x 为 True |
assertFalse(x) | x 为 False |
assertIn(a,list) | a 在 list中 |
assertNotIn | a 不在 list 中 |
先定义一个sum函数用于测试
def sum(a,b):
'''
:param a:传入的参数a
:param b:传入的参数b
:return:返回sum值
'''
return a+b
编写测试类
下面的测试代码分三步:准备工作,测试工作,收尾工作
class Test_sum(unittest.TestCase):
'''
测试sum函数
'''
def setUp(self):
'''准备工作'''
print('准备工作开始')
self.a = 1
self.b = 2
self.sum = 3
def tearDown(self):
'''收尾工作'''
del(self.a)
del(self.b)
del(self.sum)
print('收尾工作完成!')
def test_sum_true(self):
print('测试代码开始!')
self.assertEqual(sum(self.a,self.b),self.sum)
if __name__ == '__main__':
unittest.main()
如果运行结果出现
.
准备工作开始
----------------------------------------------------------------------
测试代码开始!
Ran 1 test in 0.000s
收尾工作完成!
OK
运行成功,代码函数符合预期
。
。
这里我们把sum函数改成
def sum(a,b):
'''
:param a:传入的参数a
:param b:传入的参数b
:return:返回sum值
'''
return a+b+1
测试函数不变
再运行测试函数会出现
准备工作开始
F
测试代码开始!
收尾工作完成!
======================================================================
FAIL: test_sum_true (__main__.Test_sum)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/python/day29-代码调试和测试 课后/day29-代码调试和测试/实验.py", line 25, in test_sum_true
self.assertEqual(sum(self.a,self.b),self.sum)
AssertionError: 4 != 3
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures=1)
报错出现,我们可以在下面看出错误 “AssertionError: 4 != 3” 断言错误,这时我们再调试函数就可以了
文档测试
#这是测试文档
def add(a,b):
'''这是测试文档
>>> add(1,2)
3
>>> add(2,4)
6
'''
return a+b
if __name__ == '__main__':
import doctest
doctest.testmod()
结果会在pycharm中显示出来,这里不做演示
如果出现问题:
**********************************************************************
Failed example:
add(2,4)
Expected:
76
Got:
6