1、 描述一下如何为函数和类编写测试代码。 答案:(1)必须继承unittest.TestCase;(2)用例名称前必须用test_开头;(3)用例执行后,用unittest.TestCase模块的断言来判断用例是否执行通过。
2、 分别描述一下setUp()、tearDown()、setUpClass()和tearDownClass()的作用。
答案:setUp():初始化环境(执行每条用例之前,都要执行setUp函数下面的代码,每次都要执行)
teardown():清洗环境(执行每条用例之后,都要执行tearDown函数下面的代码,每次都要执行)
setUpClass():初始化环境(执行测试类之前,要执行setUpClass函数下面的代码,只执行一次)
tearDownClass():清洗环境(执行测试类之后,要执行tearDownClass函数下面的代码,只执行一次)
3、 为如下类Area编写测试代码。
class Area:
def __init__(self,width=100,length=100): self._width = width self._length = length
def getWidth(self): return self._width
def getLength(self): return self._length
def getArea(self):
return self._width*self._length
def setWidth(self,width): self._width = width
def setLenth(self,length): self._length = length 答案:
import unittest
class AreaTestCase(unittest.TestCase): def setUp(self):
self.area = Area()
def tearDown(self): self.area = None
def testArea(self):
self.assertEqual(self.area.getArea(),10000)
def testWidth(self):
self.area.setWidth(10)
self.assertEqual(self.area.getWidth(),10) def testLength(self):
self.area.setLenth(10)
self.assertEqual(self.area.getLength(),10)
unittest.main(argv=['ignored', '-v'], exit=False)
4、 编写一个名为Employee 的类,其方法__init__() 接受姓名name和月薪salary,并将它
们都存储在属性中。编写一个raise_salary() 方法,它默认将月薪增加100元,但也能够接受其他值。为Employee 编写一个测试用例,其中包含两个测试方法:test_default_raise_salary() 和test _raise_salary() 。使用方法setUp(),以免在每个测试方法中都创建新的雇员实例。 答案:
import unittest
class Employee():
def __init__(self,name,salary): self.name = name self.salary = salary
def raise_salary(self,value=100): self.salary += value return self.salary
class TestEmployee(unittest.TestCase): def setUp(self):
self.employee = Employee('张三',5000) def test_default_raise(self):
rai_salary = self.employee.raise_salary() self.assertEqual(rai_salary,5100) def test_raise_salary(self):
rai_salary = self.employee.raise_salary(200) self.assertEqual(rai_salary,5200)
unittest.main(argv=['ignored', '-v'], exit=False)
第11章 测试代码习题及答案



