- 学习如何使用Python模块中的unittes中的工具来测试代码
- 学习编写测试用例 核实一系列输入都将得到预期的输出
测试函数
单元用例和测试用例
单元用例: 用于核实函数的某个方面没有问题
测试用例: 是一组单元测试
全覆盖式测试用例: 包含一整套单元测试 涵盖了各种可能的函数使用方式
可通过的测试
要为函数编写测试用例 可先导入模块unittes 以及要测试的函数 再创建一个继承unittest.TeestCase的类 并编写一系列的方法对函数行为的不同方面进行测试
import unittest
from name_function import get_formatted_name
class NameTestCase(unittest.TestCase):
""" 测试name_function.py"""
def test_first_last_name(self):
"""能够正确的处理像Janis Joplin这样的姓名吗?"""
formatted_name = get_formatted_name('janis', 'joplin')
self.assertEqual(formatted_name, 'Janis Joplin') //断言方法
unittest.main() //让Python运行这个文件中的测试
所有以 test_ 打头的方法都将自动运行
调用unittest 的方法 assertEqual() 将formatted_name的值同字符串‘Janis Joplin’进行比较 相等则万事大吉 不相等 则提示出不等
测试未通过
测试未通过让我们得知新代码破坏了函数原来的行为
添加新测试
方法名必须以test 打头 这样才会自动运行 自动调用 不用写调用它们的代码
测试类
各种断言
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中
创建AnonynousSurvey实例
方法setUp()
unittesst.TestCase类包含了方法setUp() 让我们只需创建这些对象一次 并在每个测试方法中使用它们 如果你在TestCase类中包含了方法setUp() Python将先运行它 在运行各个以test打头的方法
创建一个调查对象 创建一个答案列表
运行测试用例时 每完成一个单元测试 Python都打印一个字符 测试通过打印一个句点 测试引发错误打印一个E 测试导致断言失败时打印一个F