11.2 测试类

# -*- coding:utf-8 -*-
#li hongliang 2020年10月23日
#第11章 测试代码
#11.2 测试类
#在本章前半部分,你编写了针对单个函数的测试,下面来编写针对类的测试。很多程序中都会用到类,因此能够证明你的类能够正确地工作会大有裨益。如果针对类的测试通过了,你就能确信对类所做的改进没有意外地破坏其原有的行为。
#11.2.1 各种断言方法
#Python在unittest.TestCase类中提供了很多断言方法。前面说过,断言方法检查你认为应该满足的条件是否确实满足。如果该条件确实满足,你对程序行为的假设就得到了确认,你就可以确信其中没有错误。如果你认为应该满足的条件实际上并不满足,Python将引发异常。表11-1描述了6个常用的断言方法。使用这些方法可核实返回的值等于或不等于预期的值、返回的值为True或False、返回的值在列表中或不在列表中。你只能在继承unittest.TestCase的类中使用这些方法,下面来看看如何在测试类时使用其中的一个。
#11.2.2 一个要测试的类
#11.2.3 测试AnonymousSurvey 类
#下面来编写一个测试,对AnonymousSurvey类的行为的一个方面进行验证:如果用户面对调查问题时只提供了一个答案,这个答案也能被妥善地存储。为此,我们将在这个答案被存储后,使用方法assertIn()来核实它包含在答案列表中
#11.2.4 方法setUp()
#在前面的test_survey.py中,我们在每个测试方法中都创建了一个AnonymousSurvey实例,并在每个方法中都创建了答案。unittest.TestCase类包含方法setUp(),让我们只需创建这些对象一次,并在每个测试方法中使用它们。如果你在TestCase类中包含了方法setUp(),Python将先运行它,再运行各个以test_打头的方法。这样,在你编写的每个测试方法中都可使用在方法setUp()中创建的对象了。
# 测试自己编写的类时,方法setUp()让测试方法编写起来更容易:可在setUp()方法中创建一系列实例并设置它们的属性,再在测试方法中直接使用这些实例。相比于在每个测试方法中都创建实例并设置其属性,这要容易得多。
#注意 运行测试用例时,每完成一个单元测试,Python都打印一个字符:测试通过时打印一个句点;测试引发错误时打印一个E;测试导致断言失败时打印一个F。这就是你运行测试用例时,在输出的第一行中看到的句点和字符数量各不相同的原因。如果测试用例包含很多单元测试,需要运行很长时间,就可通过观察这些结果来获悉有多少个测试通过了。

#                       动手试一试
#11-3 雇员:编写一个名为Employee 的类,其方法__init__()接受名、姓和年薪,并
#将它们都存储在属性中。编写一个名为give_raise()的方法,它默认将年薪增加5000
#美元,但也能够接受其他的年薪增加量。
#为Employee 编写一个测试用例,其中包含两个测试方法:test_give_default_
#raise()和test_give_custom_raise()。使用方法setUp(),以免在每个测试方法中都创
#建新的雇员实例。运行这个测试用例,确认两个测试都通过了。

class Employee():
    def __init__(self,first_name,last_name,annual_salary,middle_name=''):
        self.firstname = first_name
        self.lastname = last_name
        self.middle_name = middle_name
        """if middle_name:
            full_name = first_name + ' ' + middle_name + ' ' + last_name
        else:
            full_name = first_name + ' ' + last_name"""
        self.annual_salary = annual_salary
        #print(full_name.title())
    def give_raise(self,raise_salary=5000):
        self.annual_salary += raise_salary
        #print(self.annual_salary)

#staff1 = Employee('li','liang',50000,'hong')
#staff1.give_raise(8000)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值