python从入门到实践第十一章练习题

'''这是11-1和11-2的练习题用于接受城市名称的函数'''
"""

def get_ciy_name(city,country):#定义一个城市名称的函数有2个形参
city_name = city + ',' + country
return city_name.title()#把值返回给函数,用title()的方法把每个单词的第一个字母转换为大写
"""
'''11-2'''
def get_ciy_name(city,country,population=''):#定义一个城市名称的函数有3个形参其中最好一个是可选用默认值空代替
if population:
city_name = city + ',' + country +' ' + 'population' + ' ' + str(population)
else:
city_name = city + ',' + country
return city_name.title()


'''这是11-1和11-2的的练习题'''
'''这是个单元测试,定义了一个方法用于测试get_ciy_name这个函数的正确性'''
import unittest#导入单元测试
from city_functions import get_ciy_name#导入自己编写的模块文件中的get_ciy_name函数

class City_test(unittest.TestCase):#定义了一个类继承unittest.TestCase
def test_city_name(self):#定义了一个方法
city_name = get_ciy_name('cq','china')#调用get_ciy_name函数给实参并把值赋值给变量
self.assertEqual(city_name,'Cq,China')#用assertEqual方法比对输出的结果是否一直

def test_city_country_population(self):#定义一个测试方法
city_name = get_ciy_name('cq','china',50000)#测试get_ciy_name函数给可选实参的情况下的值
self.assertEqual(city_name,'Cq,China Population 50000')

if __name__ == '__main__':#如果程序在本文件用运行就运行if语句以下的代码,如果是已模块的方式导入就不运行if以下的代码相当于一个程序的虚拟入口
unittest.main(
'''这是11-3的练习题employee.py'''
class Employee():
def __init__(self,last_name,first_name,annualsalary):
self.last_name = last_name
self.first_name = first_name
self.annualsaalary = annualsalary

def give_raise(self,addanual=5000):#给形参一个初始值
self.annualsaalary += addanual
print(self.annualsaalary)

'''这是employee的类测试'''
import unittest
from employee import Employee

class Test_employee(unittest.TestCase):#切记要继承unittest.TestCase的父类

def setUp(self) -> None:#用setUp创建一个对象给测试的方法使用,好处是可以在整个类使用,应为是存储在变量self中
self.def_info = Employee('alex','liu',2000)

def test_give_def_rais(self):
self.def_info.give_raise()#调用上面setUp那个变量
self.assertEqual(self.def_info.annualsaalary,7000)

def test_user_rais(self):
self.def_info.give_raise(1000)
self.assertEqual(self.def_info.annualsaalary,3000)

if __name__ == '__main__':
unittest.main()

posted @ 2020-07-06 23:04  网工学搬砖  阅读(184)  评论(0编辑  收藏  举报