python第一单元笔记_python单元测试unittest初体验

为了提高驾驭更多代码的能力,非常有必要在编写代码的过程中,引入测试,特别是单元测试。这正好也是TDD(测试驱动开发)的思想。要修改一个被很多地方调用的函数,先写这个函数的单元测试,测试通过后修改函数,再重新测试,确保函数功能没有发生变化或异常。

python标准的unittest模块,可以很好的支持代码编写过程中随时都要用到的单元测试,支持TDD的落地。本文介绍简单实用unittest进行单元测试基本技巧。

假设有一个文件misc.py,里面有两个函数ehex和ebin,现在要给这两个函数编写单元测试用例。我们创建一个test.py文件,这个test.py文件中的代码如下:

import unittest

from misc import ehex, ebin

class Test(unittest.TestCase):

def test_ehex(self):

self.assertEqual(ehex(1), '0x01')

self.assertEqual(ehex(123), '0x7B')

self.assertEqual(ehex(255), '0xFF')

self.assertEqual(ehex(567), '0x0237')

self.assertEqual(ehex(5678), '0x162E')

self.assertEqual(ehex(123456789), '0x075BCD15')

with self.assertRaises(ValueError):

ehex(-1)

def test_ebin(self):

self.assertEqual(ebin(1), '0b00000001')

self.assertEqual(ebin(123), '0b01111011')

self.assertEqual(ebin(255), '0b11111111')

with self.assertRaises(ValueError):

ebin(-1)

self.assertRaises(ValueError, ebin, 256)

if __name__ == '__main__':

unittest.main()

首先import unittest模块,然后引入要测试的函数。编写一个自己的类,继承自unittest.TestCase。然后开始写测试代码,每个测试成员函数,都必须以test_开头,否则unittest库就检测不到,就不能自动运行测试代码。self.assertEqual用来进行是否相等的判断,self.assertRaises用来进行是否有异常抛出的判断。这类assert*函数还有很多。

最后就是调用unittest.main()。运行单元测试的方法:

$ python3 test.py

..

----------------------------------------------------------------------

Ran 2 tests in 0.001s

OK

$ python3 test.py -v

test_ebin (__main__.Test) ... ok

test_ehex (__main__.Test) ... ok

----------------------------------------------------------------------

Ran 2 tests in 0.001s

OK

我喜欢加上-v参数,输入更详细一些。

以上就是unittest模块的基本实用框架,这个模块还有很多其它的assert*函数可以实用,用来进行更复杂的函数返回的判断,还有更多更丰富的功能。请参考python官方的详细介绍:https://docs.python.org/3/library/unittest.html

重要的基础函数,任何一代修改都很关键,如果有单元测试代码支撑,修改起来会更加有信心。

-- EOF --

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值