python之unittest单元测试

在Python 标准库中的模块unittest提供了我们代码测试工具。单元测试用于核实函数的某个方面没有问题;测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。全覆盖式测试用例包含一整套单元测试,涵盖了各种可能的函数使用方式。对于大型项目,要实现全覆盖可能很难,所以在最初,只要针对代码的重要行为编写测试即可,等项目被广泛使用时再考虑全覆盖。
要为函数编写测试用例,可先导入模块unittest以及要测试的函数,再创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。
如下,只包含了一个方法的测试用例,它检查函数get_formatted_name()在给定名和姓时,能否正确的工作:


import unittest


def get_formatted_name(first,last):
    """Generate a neatly formatted full name."""
    full_name = first + ' ' + last
    return full_name


class NamesTestCase(unittest.TestCase):
    """测试name_function"""
    def test_first_last_name(self):
        formatted_name = get_formatted_name('jason', 'james')
        self.assertEqual(formatted_name, 'Jason James')

unittest.main()

而测试结果为:
这里写图片描述
在代码中,assertEqual是unittest类的功能之一:断言方法。这个方法用来核实得到的结果是否与期望的结果一致。在这里,我们知道get_formatted_name()应该返回这样的姓名,即小写的首字母的名和姓,且它们之间应该有一个空格。为检查是否确实如此,我们调用unittest得到方法assertEqual(),并向它传递formatted_name和 ‘Jason James’。代码self.assertEqual(formatted_name, 'Jason James')的意思是说,将formatted_name的值同字符串’Jason James’进行比较,如果它们相等,就GG, 如果不相等,就提示。
如果检查条件没错,测试通过了意味着函数的行为是对的,而测试未通过意味着编写的新代码有错。因此,测试未通过时,不要修改测试,而应修复导致测试不能通过的代码:检查刚对函数所做的修改,找出导致函数行为不符合预期的修改。
更多的核实方法:

方法用途
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中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值