“实践出真知”。学习了这么多理论知识之后,本节课我们将带领大家通过具体的代码案例深度体会单元测试在真实生产环境下的应用,包括Unittest简单应用、Unittest复杂应用、运行测试集的用例三个方面。
Unittest简单应用
如图所示,这是一个要被测试的类,这个类代表了一个人,类中有一个函数为get_name(),作用是获取这个人的名字。围绕着这个函数首先想到的测试点就是函数能否正确输出人名。因此就有了如下图所示的单元测试代码。
第一步,将使用到的unittest框架和所需要的函数导入。
第二步,针对被测试的函数写一个测试类,这里要注意测试类必须继承自unittest和TestCase。
第三步,构建实例化的函数,可以理解为生成两个人,一个叫张三,一个叫李四。
第四步,编写一个用于测试的函数,这里注意函数名必须是以test开头。通过图片里的代码可以看到,通过使用assertEqual断言来做相应的测试,断言中包括了两部分,第一部分是预期,第二部分是实际的值。通过对两个值的比较来完成测试。
Unittest复杂应用
下面来看一个复杂的例子。如图所示,这个被测试的类是一个公司。这个公司的信息包含了公司的名字、公司的老板、公司的员工数。在这个公司的类中设置了三个函数,老板是谁、雇佣一个新员工、解雇一个员工。通过这些信息,可以想到的测试点有:
(1)who_is_boss()这个函数能够正确的返回老板的姓名;
(2)使用hire()函数雇佣新人,公司的员工总数+1;
(3)使用hire()函数重复雇佣一个人,函数会报错或者公司员工数量不变;
(4)使用fire()函数解雇一个人,公司的员工总数-1;
(5)使用fire()函数解雇非公司的员工,函数会报错或者员工数量不变。
针对以上的几个测试点,可以编写出相应的测试类。
首先将所需要的类库导入,并且测试类要继承自unittest和TestCase。然后使用setUpClass()函数构建一个公司,设置老板的姓名和公司的名字。在这里设置了一个tearDown()清理函数,是为了方便测试的时候将员工全部清理掉。
通过图片可以看到,下面的三个函数原理基本跟上一个案例相同,都是通过断言来进行测试。测试类编写完成之后,需要运行这个类进行测试。如果需要执行全部的测试用例,如图所示,使用unittest.main()这个函数且不需要添加任何参数。执行完成后会得到如下图所示的结果,测试结果分为几个部分:
第一部分的代码展示的是执行测试用例的结果,“.”说明测试用例执行通过,“E”说明测试用例发生了特殊情况异常中断,“F”说明测试用例执行失败。
第二部分则是打印的报错信息,当出现“E”或者“F”的时候,系统会打印出异常中断和执行失败的原因。
第三部分为统计信息,包括了共执行了几个测试用例,测试用例执行共花费了多少时间,测试用例执行成功或失败的数量。
运行测试集的用例
在真实应用过程中,可能会出现测试用例太多、执行一轮测试用例花费的时间太长或者只想执行部分测试用例的情况,在这些情况下,就需要使用测试集进行测试。
上图中是一个测试集函数的代码,它包括了以下几个部分:
→ 首先生成一个测试集。
→ 然后使用addTest()方法将测试用例加入到测试集中
最后编写测试集返回语句。,
这样就完成了一个测试集的构建。在执行测试集的时候,使用图中的代码,在unittest_main()中加入参数,即可完成测试集的运行。
以上就是有关于单元测试实践的全部内容啦,希望通过案列的讲解,你能对理论知识掌握的更加深刻!
点击进入获得更多技术信息~~
|