Unittest-快速开始:一个简单的案例

首先了解一下如何在 unittest 框架中编写测试用例。

为了更好的了解 unittest 本身,我们编写一个非常简单的函数来进行测试。

# 被测加法函数,传入待相加的参数,返回相加结果
def add(a, b):
    return a + b

这就是单元测试最基本的单元——函数。

我们对这个 add() 函数进行测试,编写一些测试用例:

  • 测试整数相加是否正确
  • 测试字符串相加是否正确
  • 测试列表相加是否正确
import unittest

class TestAdd(unittest.TestCase):

    def test_add_int(self):
        '''测试int相加'''
        result = add(5, 100)
        self.assertEqual(result, 105, '整数相加错误')

    def test_add_str(self):
        '''测试str相加'''
        result = add('5', '6')
        self.assertEqual(result, '11', '字符串相加错误')

    def test_add_list(self):
        result = add(['1', '2'], ['a', 'b'])
        self.assertEqual(result, ['1','2','a','b'], '列表相加错误')

上面就是一个简单的测试用例的写法:

  • class TestAdd(unittest.TestCase)

    uniitest 中的用例必须写成测试类,并且需要继承自 TestCase(派生类);

  • def test_add_int(self):

    每一个测试用例必须写成测试函数,且必须以 test 开头。强烈注意!!!

    测试函数应该没有返回值,测试方法不应该有任何参数。

  • self.assertEqual(result, 105, ‘整数相加错误’)

    测试代码使用断言代码,判断预期结果与实际结果是否符合。

    assertEqual() 方法是用来断言实际结果(add() 函数的调用结果 result)和预期结果(105)之间对比。如果不符合则在断言错误信息中输出提示“整数相加错误”。

    断言成功则表示测试通过,断言失败则抛出断言异常AssertionError表示测试失败。

测试用例的基本过程就是通过操作程序并检查预期结果与实际结果之间的差异。这里是一个单元测试过程,操作程序的过程是对最基本单元(函数)的实际调用过程。

然后将调用产生的实际结果与我们预期应该得到的结果使用断言方法来对比。

接下来,运行测试,这里我们用最基本的运行方式unittest.main()

if __name__ == "__main__":
    unittest.main()

我们在用例中故意将test_add_str():测试方法的断言写成失败:

..F
======================================================================
FAIL: test_add_str (__main__.TestAdd)
测试str相加
----------------------------------------------------------------------
Traceback (most recent call last):
  File "d:\PythonProject\Python笔记\test_demo.py", line 17, in test_add_str
    self.assertEqual(result, '11', '字符串相加错误')
AssertionError: '56' != '11'
- 56
+ 11
 : 字符串相加错误

----------------------------------------------------------------------
Ran 3 tests in 0.000s

FAILED (failures=1)

共运行 3 个测试,其中 2 个成功,1 个失败。

我们来看看结果中有什么:

  1. ..F
    - .:代表测试通过,
    - F:代表测试失败。

  2. FAIL: test_add_str (__main__.TestAdd)
    - 断言错误的用例会抛出 AssertionError,并提示为何断言失败:'56' != '11'
    - -56 +11表示结果缺少 56,而多出了 11。

  3. Ran 3 tests in 0.000s
    - 运行 3 个测试共耗时多少秒。

  4. FAILED (failures=1)
    - 失败数量。


运行结果中各个字符的含义:

  • :代表测试通过。
  • F:代表测试失败,F 代表 failure。
  • E:代表测试出错,E 代表 error。
  • s:代表跳过该测试,s 代表 skip。
  • x: 代表忽略该测试结果,x 代表 expected failures。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值