大家好,之前的文章《Python的PEP8编码规范》最后,有写过项目目录结构中有一个tests的文件夹,用来存放测试代码的文件,一般也就是用来存放单元测试文件的地方,今天我们就来看一下Python中单元测试的代码编写。

单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情。虽然会很快熟悉内容,但是修改和调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而单元测试可以帮助我们很快准确的定位到问题的位置,出现问题的模块和单元。所以这是一件很愉快的事情,因为我们知道其它修改或没有修改的地方仍然是正常工作的。

Python中有多个测试框架,主要有unittest,nose, pytest等,通常情况下大家使用unittest和pytest较多, 其中unittest是Python的内置测试框架,pytest是第三方框架,今天讲到的是本人经常使用的unittest。

unittest 单元测试框架是受到 JUnit 的启发,与其他语言中的主流单元测试框架有着相似的风格。其支持测试自动化,配置共享和关机代码测试。支持将测试样例聚合到测试集中,并将测试与报告框架独立。

对于unittest, 里面有许多功能方法,但是平常很多都使用不到,我们主要讲解下常用的部分。

测试用例类TestCase

一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。 unittest 提供一个基类: TestCase ,用于新建测试用例。

测试套件TestSuite

test suite 是一系列的测试用例,或测试套件,或两者皆有。它用于归档需要一起执行的测试。

测试运行器(test runner)

test runner 是一个用于执行和输出测试结果的组件。这个运行器可能使用图形接口、文本接口,或返回一个特定的值表示运行测试的结果。

举例说明:

测试加、减、乘、除四个函数,如图:

对以上加减进行测试TestCase的使用,可以看到一个通过一个失败,以及失败原因,如图:

同样对加减进行测试TestSuite和TestRunner的使用:执行结果与上面相同,但可以使用套装进行测试,也可进行多测试文件测试。

从以上示例中我们会发现使用了assert……断言关键字来测试,以下是常用的测试断言:

当然也会有其他用途的断言,比如抛错、日志等,如图:

另外,我们需要明确一下单元测试的编写规则:

1、测试文件名须以“test_”开头或者以”_test”结尾

2、编写单元测试时,我们需要编写一个测试类,从 unittest.TestCase 继承。

3、以 test 开头的方法就是测试方法,不以 test 开头的方法不被认为是测试方法,测试的时候不会被执行。

4、对每一类测试都需要编写一个 test_xxx() 方法,使用assert断言。

至此,即可完成项目基础的单元测试,单元测试很重要,不仅可以帮我们快速定位为题,也方便我们重构测试,需要我们开发人员足够重视。

“今天的分享就到这里,希望对大家有所帮助,欢迎点赞收藏、参与评论,谢谢~”

举报/反馈

小雨说代码

915获赞 220粉丝
程序员小哥 - IT程序技术知识分享、交流
关注
0
0
收藏
分享