class Dog():
'''模拟小狗'''
def __init__(self,name,age):
'''初始化属性name和age'''
self.name = name
self.age = age
def sit(self):
'''模拟小狗被命令时蹲下'''
print(self.name.title() + ' is now sitting!')
def roll_over(self):
'''模拟小狗被命令是打滚'''
print(self.name.title() + ' rolled over!')
def update_age(self,age):
'''更新年龄'''
self.age = age
my_dog = Dog('marry',3)
print("My dog' name is " + my_dog.name.title() + ".")
print("It is " + str(my_dog.age) + " years old.")
my_dog.sit()
my_dog.roll_over()
# 修改属性的值两种方式
# 1.直接修改
# 2.通过方法修改
my_dog.age = 4 # 方法一
print("It is " + str(my_dog.age) + " years old.")
my_dog.update_age(5) # 方法二
print("It is " + str(my_dog.age) + " years old.")
# 继承父类Dog
class Big_Dog(Dog):
'''模拟特殊的狗,体型变大'''
#重写父类方法
def __init__(self,name,age,weight):
'''初始化属性name和age'''
super().__init__(name,age)
self.weight = weight
# 添加新方法
def warning(self):
print("This is a big dog! Please be careful!")
my_big_dog = Big_Dog('boss',6,60)
my_big_dog.warning()
def get_formatted_name(first,middle,last):
'''生成整洁的姓名'''
full_name = first + ' ' + middle + ' ' + last
return full_name.title()
# formatted_name = get_formatted_name('janis','joplin')
# print(formatted_name)
import unittest
from name_function import get_formatted_name
class NameTestCase(unittest.TestCase):
'''测试name_function.py'''
def test_first_last_name(self):
'''能够正确地处理'''
formatted_name = get_formatted_name('janis','sss','joplin')
self.assertEqual(formatted_name,'Janis Sss Joplin')
# def test_first_last_name1(self):
# '''不能够正确地处理'''
# formatted_name = get_formatted_name('janis','joplin')
# self.assertEqual(formatted_name,'Janis Sss Joplin')
if __name__ == "__main__":
unittest.main()
class AnonymousSurvey():
'''收集匿名调查问卷的答案'''
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):
'''显示收集到的所有答卷'''
print("Survey result:")
for response in self.responses:
print('- ' + response)
import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
'''测试survey.py'''
def test_store_single_response(self):
'''测试单个答案会被妥善存储'''
question = "What language did you first learn to speak?"
my_survey = AnonymousSurvey(question)
my_survey.store_response('English')
self.assertIn('English', my_survey.responses)
def test_store_three_response(self):
'''测试三个答案会被妥善存储'''
question = "What language did you first learn to speak?"
my_survey = AnonymousSurvey(question)
responses = ['English', 'Chinese', 'Spanish']
for response in responses:
my_survey.store_response(response)
for response in responses:
self.assertIn(response,my_survey.responses)
# setUp()方法,使我们只需创建对象一次。
# def setUp(self):
# question = "What language did you first learn to speak?"
# self.my_survey = AnonymousSurvey(question)
# self.responses = ['English', 'Chinese', 'Spanish']
#
# def test_store_single_response(self):
# '''测试单个答案会被妥善存储'''
# self.my_survey.store_response(self.responses[0])
# self.assertIn(self.responses[0], self.my_survey.responses)
#
# def test_store_three_response(self):
# '''测试三个答案会被妥善存储'''
# for response in self.responses:
# self.my_survey.store_response(response)
# for response in self.responses:
# self.assertIn(response,self.my_survey.responses)
if __name__ == "__main__":
unittest.main()
# 常用断言方法:
# assertEqual(a,b) 核实a==b
# assertNotEqual(a,b) 核实a!=b
# assertTrue(x) 核实x为True
# assertFalse(x) 核实x为False
# assertIn(item,list) 核实item在list中
# assertNotIn(item,list) 核实item不在list中
# 运行测试用例时,在输出行会发现,每通过一个单元测试时候打印一个句点;引发错误时,打印一个E;
# 测试导致断言失败时,打印一个F。可通过观察这些结果来获悉有多少个测试通过。