类的测试
基本断言方法
方法 | 作用 |
---|---|
assertEqual(a,b) | 核实a,b相等 |
assertNotEqual(a,b) | 核实a,b不相等 |
assertTrue(x) | 核实x为真 |
assertFalse(x) | 核实x为假 |
assertIn(item,list) | 核实item在list中 |
assertNotIn(item,list) | 核实tem不在list中 |
类测试的基本思想
对类中每个可能出现的情况进行一次测试,这种方法过于繁琐,需要一直创建实例
class non_survey():
"""创建一个需要测试的类,存放在survey.py"""
def __init__(self,question):
self.question = question
self.responses = []
def show_question(self):
print(self.question)
def store_response(self,new_response):
self.responses.append(new_response)
def show_result(self):
for response in self.responses:
print('- ' + response)
import unittest
from survey import non_survey
class TestSurveyCase(unittest.TestCase):
def test_store_single_question(self):
"""测试单输入情况"""
question = 'what is your first language first lesrued?'
my_survey = non_survey(question)
my_survey.store_response('english')
self.assertIn('english',my_survey.responses)
def test_store_three_question(self):
"""测试三输入情况"""
question = 'what is your first language first learned?'
my_survey = non_survey(question)
response = ['english','spain','japan']
my_survey.store_response(response)
self.assertIn(response,my_survey.responses)
unittest.main()
方法setUp()
运用此方法可以在开头创建一个实例,此后的测试可以直接拿来用,避免重复创建实例,注意此处up中的u一定是大写的!
mport unittest
from survey import non_survey
class TestSurveyCase(unittest.TestCase):
def setUp(self):
question = 'what is your first language learned'
self.my_survey = non_survey(question)
self.responses = ['english','france','spain']
def test_store_single_question(self):
self.my_survey.store_response(self.responses[0])
self.assertIn(self.responses[0],self.my_survey.responses)
def test_store_three_question(self):
for response in self.responses:
self.my_survey.store_response(response)
for response in self.responses:
self.assertIn(response,self.my_survey.responses)
unittest.main()
课后习题
11-3雇员
class Employee():
"""创建一个雇佣类,存放在employee.py中"""
def __init__(self,first_name,last_name,salary = 5000):
self.first_name = first_name
self.last_name = last_name
self.salary = salary
def give_raise(self,add):
if add:
self.salary += add
else:
self.salary += 500
return self.salary
def show(self):
print(self.first_name + ' ' + self.last_name + ' ' + str(self.salary))
import unittest
from employee import Employee
class TestEmployeeCsae(unittest.TestCase):
def setUp(self):
"""定义setUp方法,创建实例"""
self.my_employee = Employee('link','fase')
def test_give_default_raise(self):
"""测试默认情况下的工资"""
raising = self.my_employee.salary
self.assertEqual(5000,raising)
def test_give_custom_raise(self):
"""测试设置增加值的工资"""
raising_1 = self.my_employee.give_raise(700)
self.assertEqual(5700,raising_1)
unittest.main()