Python笔记11:使用标准库模块unnittest测试Code(1-测试函数)

Python提供了一种自动测试函数输出地高效方式 :使用Python标准库中的模块unnittest提供了代码测试工具。
单元测试用于核实函数的某个方面没有问题,测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。良好的测试用例考虑到了函数可能受到的各种输出,包含针对所有这些情形的测试。
通常,最初只要针对代码的重要行为编写测试即可,等项目被广泛使用时再考虑全覆盖。

案例(得到完整名字功能的测试):

1.可通过的测试:

import unittest
![这里写图片描述](https://img-blog.csdn.net/20180808120036764?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01hbl9MdWNpZmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
def get_name(first, last):
   """得到完整的名字"""
   name = first + ' ' + last
   return name.title()

class NameTestCase(unittest.TestCase):
    """测试代码"""
    def test_fln(self):
        name = get_name('Monica', 'Bellucci')
        self.assertEqual(name, 'Monica Bellucci')

unittest.main()

该代码没有任何问题

成功

2.不能通过的测试

import unittest

def get_name(first, middle , last):
   """得到完整的名字"""
   name = first  + ' ' + middle + ' ' +last
   return name.title()

class NameTestCase(unittest.TestCase):
    """测试代码"""
    def test_fln(self):
        name = get_name('Monica', 'Bellucci')
        self.assertEqual(name, 'Monica Bellucci')

unittest.main()    

Python笔记11:使用标准库模块unnittest测试Code(1-测试函数)_第1张图片

错误中包含的信息很多。一个字母E指出测试用例有一个单元测试导致了错误。接下来,在traceback指出函数调用get_name(‘Monica’, ‘Bellucci’)有问题,因为它缺少一个必不可少的位置信息。
这时就需要我们修改!这正是测试的意义所在。

3.修改

我们需要修改一下get_name函数

import unittest

def get_name(first, last, middle = ''):
   """得到完整的名字"""
   if middle:
        name = first  + ' ' + middle + ' ' +last
   else:
       name = first + ' ' + last
   return name.title()

class NameTestCase(unittest.TestCase):
    """测试代码"""
    def test_fln(self):
        name = get_name('Monica', 'Bellucci')
        self.assertEqual(name, 'Monica Bellucci')

unittest.main()

显然,这是可以通过测试的。

4.补充测试

代码修改之后有了新的情况!中间名称被加上了。
接下来我们需要测试有中间名称的情况。

import unittest

def get_name(first, last, middle = ''):
   """得到完整的名字"""
   if middle:
        name = first  + ' ' + middle + ' ' +last
   else:
       name = first + ' ' + last
   return name.title()

class NameTestCase(unittest.TestCase):
    """测试代码"""
    def test_fln(self):
        name = get_name('Monica', 'Bellucci' , 'Van')
        self.assertEqual(name, 'Monica Van Bellucci')

unittest.main()

通过。

5.测试完成。

你可能感兴趣的:(Python)