《Python编程从入门到实践》记录之测试代码(unitttest模块)

unittest模块提供了测试代码工具。

单元测试:用于核实函数的某个方面没有问题

测试用例:一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。


函数编写测试用例时,要导入模块unittest和要测试的函数,再创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。

下边是一个只包含一个方法的测试用例,检查函数get_formatted_name()在给定名和姓时能否正确地工作:

get_formatted_name()函数包含在name_funtion模块中,接受名和姓并返回整洁的姓名,下边是name_function模块

#!/usr/bin/env python
# -*- coding:utf-8 -*-


def get_formatted_name(first, last):
    """生成整洁的姓名"""
    full_name = first + ' ' + last
    return full_name.title()

测试代码(test_name_function):

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# 导入unittest模块和要测试的函数get_formatted_name()
import unittest
from name_function import get_formatted_name


# 定义一个继承unittest.TestCase的类,用于包含一系列针对get_formatted_name()的单元测试
class NamesTestCase(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')


# 让Python运行这个文件中的测试
if __name__ == '__main__':
    unittest.main()

运行结果:

解析上述代码:

导入unittest模块和要测试的函数get_formatted_name():

  • import unittest
  • from name_function import get_formatted_name

定义一个继承unittest.TestCase的类,用于包含一系列针对get_formatted_name()的单元测试:

  • class NamesTestCase(unittest.TestCase)

测试函数定义的方法要都以test开头。运行test_name_function.py时,定义的所有方法都将自动运行。

self.assertEqual:unittest类最有用的功能之一,用来核实得到的结果是否与期望的结果一致。self.assertEqual(formatted_name, 'Janis Joplin')的意思就是“将formated_name的值同字符串‘Janis Joplin’进行比较”,如果相等,就可以,如果不相等,就告诉一声。

猜你喜欢

转载自blog.csdn.net/Sophia_11/article/details/84668571
今日推荐