Python测试代码2之--unittest类的测试

        在之前学习的python中unittest模块,主要是进行的函数级别的单元测试。这次,我们主要讲解一下类级别的单元测试。理论方面的知识之前已经讲解过了,这里就不再多说,我们直接进入正题,来实战演练一下通过unittest模块如何对类进行单元测试。

        对类进行测试,那么我们首先要写一个类。主要的功能就是实现一个调查问卷,里面包含了几个函数方法。具体代码如下:



这个类中包含的四个方法分别是:__init__()方法,用来进行属性的初始化,show_question()方法用来显示问题,store_responses()方法用来存储用户的答案,最后一个show_responses()方法用来显示用户的答案。接下来我们来对这个类中,存储用户答案的功能进行一下测试。主要的测试思路就是,用户看到问卷调查的问题后,输入自己的答案,然后存储到responses[]列表中,我们要测试的是用户的答案是否成功的存储到了列表中。




我们看到这段代码中,首先引入unittest模块和要测试的类AnonymouseSurvey,之后在类SurveyTestCases(测试用例中),我们写了一个单元测试,测试的内容是验证答案是否被存储到列表中。其中的重点是assertIn()方法,用来断言判断用户输入的答案和列表中存储的答案是否一致,如果一致就说明答案存储成功。而运行后的结果在右侧,也是说明这个类通过测试后是正常的。

但是上面我们的用户只是输入了一个答案,如果用户输入多个答案,那么这个类是否会有问题呢?下面我们就来实战看一下这种情况会发生什么。



我们主要看test_more_survey()这个方法,从名字中可以看出来,是用来测试用户输入多个答案时,能否保存成功。我们再来看一下红框里面的内容,首先我们创建了一个列表resq,里面存储了三个答案,一会用来保存到列表responses中,然后在第一个for循环里面,依次取出列表中的答案,通过store_responses()方法存储到列表responses中。第二个for循环是从存储用户输入内容的列表resq中循环取值,和responses列表对比。最后运行程序,结果如右侧,ran 2 tests in 0.000s,运行两个单元测试用例成功。至此,在测试用例中添加新的单元测试,以及用户输入1个答案或者多个答案,通过测试都表明了这个类时可以正常运行的。也就是说这个类时可以经受住这些考验的。


还有一个重要的问题,不知大家有没有发现,上面的测试用例中,每一个单元测试中都包含着同样的代码,比如:


如图红框中的代码,在每个单元测试中,都写了一个问题,创建了一个类的对象实例以及要存储的数据。这样显得重复代码太多,在大型项目中,有可能会影响程序的性能。现在我们通过setUp()方法来解决这个问题。




如上图代码红框所示,我们在setUp()方法中创建了类的对象,以及一组测试数据,这样在下面的单元测试方法中,就显得特别的简洁明了,而且也利于后期的维护。这样,关于unittest模块测试类的方法,就学完了,相信你也已经完全掌握了。










































































































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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值