2018.4.8 Python作业

第十一章 测试类

11-1 城市和国家:编写一个函数,它接受两个形参:一个城市名和一个国家名。这个函数返回一个格式为City,Country的字符串,如Santiago,Chile。将这个函数存储在一个名为city_functions.py的模块中。

创建一个名为test_cities.py的程序,对刚编写的函数进行测试(别忘了,你需要导入模块unittest以及要测试的函数)。编写一个名为test_city_country()的方法,核实使用类似于'Santiago'和'chile'这样的值来调用前述函数时,得到的字符串是正确的。运行test_cities.py,确认测试test_city_country()通过了。

#city_functions.py
def show_city(city, country):
    return city + ', ' + country
#test_cities.py
import unittest
from city_functions import show_city

class CityTestCase(unittest.TestCase):
    def test_city_country(self):
        formatted_name = show_city('Santiago', 'Chile')
        self.assertEqual(formatted_name, 'Santiago, Chile')

unittest.main()

11-2 人口数量:修改前面的函数,使其包含第三个必不可少的形参population,并返回一个格式为City,Country - population xxx 的字符串,如 Santiago,Chile - population 5000000。运行test_cities.py,确认test_city_country()未通过。

修改上述函数,将形参population设为可选的。再次运行test_cities.py,确认测试test_city_country()又通过了。

再编写一个名为test_city_country_population()的测试,核实可以使用类似'Santiago'、'chile'和'population=5000000'这样的值来调用这个函数。再次运行test_cities.py,确认测试test_city_country_population()通过了。

#city_functions.py
def show_city(city, country, population=''):
    return city + ', ' + country + ' - population ' + str(population)
#test_cities.py
import unittest
from city_functions import show_city

class CityTestCase(unittest.TestCase):
    def test_city_country(self):
        #formatted_name = show_city('Santiago', 'Chile')
        #self.assertEqual(formatted_name, 'Santiago, Chile')
        formatted_name = show_city('Santiago', 'Chile')
        self.assertEqual(formatted_name, 'Santiago, Chile - population ')

    def test_city_country_population(self):
        formatted_name = show_city('Santiago', 'Chile', population=5000000)
        self.assertEqual(formatted_name, 'Santiago, Chile - population 5000000')

unittest.main()

11-3 雇员:编写一个名为Employee的类,其方法__init__()接受名、姓和年薪,并将它们都存储在属性中。编写一个名为give_raise()的方法,它默认将年薪增加5000美元,但也能够接受其他的年薪增加量。

为Employee编写一个测试用例,其中包含两个测试方法:test_give_default_raise()和test_give_custom_raise()。使用方法setUp(),以免在每个测试方法都创建新的雇员实例。运行这个测试用例,确认两个测试都通过了。

#employee.py
class Employee():
    def __init__(self, first_name, last_name, salary):
        self.first_name = first_name
        self.last_name = last_name
        self.salary = salary

	def give_raise(self, money = 5000):
		self.salary += money
#test_salary.py
import unittest
from employee import Employee

class EmployeeCase(unittest.TestCase):
    def setUp(self):
        first_name = "Randy"
        last_name = "Marsh"
        salary = 200000
        self.my_employee = Employee(first_name, last_name, salary)

    def test_give_default_raise(self):
        self.my_employee.give_raise()
        self.assertEqual(self.my_employee.salary, 205000)

    def test_give_custom_raise(self):
        self.my_employee.give_raise(10000)
        self.assertEqual(self.my_employee.salary, 210000)

unittest.main()
阅读更多
上一篇2018.4.4 Python作业
下一篇Leetcode 41. First Missing Positive
想对作者说点什么? 我来说一句

python满分大作业 打地鼠

2012年06月27日 3.89MB 下载

python作业

2013年12月21日 6KB 下载

python作业扫雷游戏

2013年04月04日 8KB 下载

python满分大作业 连连看

2012年06月23日 29.59MB 下载

没有更多推荐了,返回首页

关闭
关闭