您的位置:首页 > 编程语言 > Python开发

《Python编程:从入门到实践》学习打卡17-测试代码(下)

2020-07-18 04:48 555 查看

类的测试

基本断言方法

方法 作用
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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐