【day 9】python编程:从入门到实践学习笔记-测试代码(
学习笔记目录
【day 1】python编程:从入门到实践学习笔记-安装、变量和简单数据类型
【day 2】python编程:从入门到实践学习笔记-列表以及其操作
【day 3】python编程:从入门到实践学习笔记-if 语句(末附练习答案代码)
【day 4】python编程:从入门到实践学习笔记-字典(末附练习答案代码)
【day 5】python编程:从入门到实践学习笔记-用户输入和while循环(末附答案代码)
【day 6】python编程:从入门到实践学习笔记-函数(末附练习答案代码)
【day 7】python编程:从入门到实践学习笔记-类(末附练习答案代码)
【day 8】python编程:从入门到实践学习笔记-文件和异常(末附练习答案代码)
【day 9】python编程:从入门到实践学习笔记-测试代码(末附练习答案代码)
【day 10】python编程:从入门到实践学习笔记-Django入门(一)
【day 11】python编程:从入门到实践学习笔记-Django入门(二)
【day 12】python编程:从入门到实践学习笔记-Django入门(三)
【day 13】python编程:从入门到实践学习笔记-Django入门(四)
【day 14】python编程:从入门到实践学习笔记-用户账户(一)
【day 15】python编程:从入门到实践学习笔记-用户账户(二)
【day 16】python编程:从入门到实践学习笔记-用户账户(三)
【day 17】python编程:从入门到实践学习笔记-设计样式和部署(一)
【day 18】python编程:从入门到实践学习笔记-设计样式和部署(二)& 补充
第十一章 测试代码
测试函数
单元测试和测试用例
Python标准库中的模块unittest提供了代码测试工具。单元测试用于核实函数的某个方面没有问题;测试用例时一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。。
测试示例
现在有这么一个函数以及其单元测试:
#name_function.py
def get_formatted_name(first, last, middle=''):
if middle:
full_name = first + ' ' + middle + ' ' + last
else:
full_name = first + ' ' + last
return full_name.title()
#test_name_ function.py
import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
def test_first_last_name(self):
formatted_name = get_formatted_name('janis', 'joplin')
self.assertEqual(formatted_name, 'Janis Joplin')
unittest.main()
运行结果:
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
首先导入模块unittest和要测试的函数get_formatted_ name()。接着创建一个单元测试类NamesTestCase,记住,类名最好包含Test并且继承unittest.TestCase类,这样python才能识别为测试类。
接着编写好测试方法之后(在这里我们只写了一个方法:只有名和姓的姓名能否被正确地格式化),当我们运行 test_name_ function.py时,所有以test开头的方法都将自动运行。
最后,我们使用了unittest类的一个断言方法unittest.assertEqual()
,用来核实得到的结果是否与期望的结果一致。代码行unittest.main()
让python运行文件中的测试。
测试类
各种断言方法
python的unittest.TestCase类中提供了很多断言方法(检查应该满足的条件是否确实满足,返回布尔值)。
下面提供了六种常用的断言方法:
-
assertEqual(a, b)
:核实a == b -
assertNotEqual(a, b)
:核实a != b -
assertTrue(x)
:核实x为True -
assertFalse(x)
:核实x为False -
assertIn(item, list)
:核实item在list中 -
assertNotIn(item, list)
:核实item不在list中
当测试方法多了起来的时候,每次都要创建一个实例对象很麻烦,而python的unittest.TestCase类中提供了方法setup()
,让我们只需创建一次实例对象即可让所有方法使用该对象(运行测试时如果包含这个函数将会首先运行它)。
注意:测试通过时为一个句点,测试引发错误时为一个E,测试导致断言失败时为一个F。
第十一章练习答案代码
链接:https://pan.baidu.com/s/1vnwIuf-NZXBoHYL7QUH7Fg 密码:pp35