11-3 雇员:编写一个名为 Employee 的类,其方法__init__()接受名、姓和年薪,并将它们都存储在属性中。编写一个名为 give_raise() 的方法,它默认将年薪增加 5000美元,但也能够接受其他的年薪增加量。
为 Employee 编写一个测试用例,其中包含两个测试方法:test_give_default_raise()和 test_give_custom_raise()。使用方法 setUp(),以免在每个测试方法中都创建新的雇员实例。运行这个测试用例,确认两个测试都通过了。
employee.py
class Employee(): """模拟雇员""" def __init__(self, first, last, annual_salary): """初始化雇员的属性""" self.first_name = first self.last_name = last self.anuual_salary = annual_salary def give_raise(self, increament=5000): """给雇员增加年薪,默认为5000美元,也可接受其他数值""" self.anuual_salary += increament
test_ employee.py
"""编写两个方法,进行两次测试""" import unittest from employee import Employee class TestEmployee(unittest.TestCase): """针对Employee类中的方法give_raise进行测试""" def setUp(self): """ 创建一个雇员实例供测试使用 """ self.my_employee = Employee('John', 'Smith', 50000) def test_give_default_salary(self): """测试给雇员增加默认数额的年薪""" self.my_employee.give_raise() self.assertEqual(self.my_employee.anuual_salary,55000) def test_give_custom_salary(self): """测试给雇员增加指定数额的年薪""" self.my_employee.give_raise(3000) self.assertEqual(self.my_employee.anuual_salary,53000) unittest.main()
两个测试均通过
运行测试用例时,两个测试用例总是对"my_employee"这个名字进行报错,将其错认为 self的属性。后来去 setUp()中复制"my_employee",用粘贴替换掉其他所有地方的"my_employee",才解决了。估计是字体不同的问题?