1. 程式人生 > >Python編程:從入門到實踐——【作業】——第十一章(測試代碼)

Python編程:從入門到實踐——【作業】——第十一章(測試代碼)

stc 增加 收集 得到 width .com ast 接受 ted

第十一章

11-1 城市和國家 : 編寫一個函數, 它接受兩個形參: 一個城市名和一個國家名。 這個函數返回一個格式為City, Country 的字符串, 如Santiago, Chile 。 將
這個函數存儲在一個名為city_functions.py的模塊中。
創建一個名為test_cities.py的程序, 對剛編寫的函數進行測試(別忘了,你需要導入模塊unittest 以及要測試的函數) 。 編寫一個名為test_city_country( ) 的
方法, 核實使用類似於‘ santiago‘ 和‘ chile‘ 這樣的值來調用前述函數時,得到的字符串是正確的。 運行test_cities. py , 確認測
試test_city_country( ) 通過了。
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( ) 通過了。

11-1

模塊city_functions.py

def get_formatted_name(city,country):
    ‘‘‘函數返回一個格式為City, Country 的字符串‘‘‘
    full_name = city + country
    return full_name.title()

test_cities.py

import unittest
from city_functions import get_city_country
class CityCountryTestCase(unittest.TestCase):
    ‘‘‘測試city_functions.py
‘‘‘ def test_city_country(self): ‘‘‘類似於‘santiago‘和‘chile‘這樣的值來調用前述函數時‘‘‘ formatted_name =get_city_country(santiago , chile) self.assertEqual(formatted_name,Santiago Chile)#日了狗了,就這裏的大小寫出錯了 unittest.main()

結果:

技術分享圖片

11-2

模塊city_functions.py

def get_city_country(city,country,population):
    ‘‘‘函數返回一個格式為City, Country 的字符串‘‘‘
    full_name=city + country + -population  + str(population)
    return full_name.title()

test_cities.py

import unittest
from city_functions import get_city_country
class CityCountryTestCase(unittest.TestCase):
    ‘‘‘測試city_functions.py‘‘‘
    def test_city_country(self):
        ‘‘‘類似於‘santiago‘和‘chile‘這樣的值來調用前述函數時‘‘‘
        formatted_name =get_city_country(santiago , chile, 5000000 )
        self.assertEqual(formatted_name,Santiago Chile-Population 5000000)
unittest.main()
#有瑕疵的部分我這裏的Population大寫了,實際上是不大寫的,所以按照別人的應該是city_functions.py裏不用full_name來定義

結果:

技術分享圖片

11-3 雇員 : 編寫一個名為Employee 的類, 其方法__init__( ) 接受名、 姓和年薪, 並將它們都存儲在屬性中。 編寫一個名為give_raise( ) 的方法, 它默認將
年薪增加5000美元, 但也能夠接受其他的年薪增加量。
為Employee 編寫一個測試用例, 其中包含兩個測試方法: test_give_default_raise( ) 和test_give_custom_raise( ) 。 使用方法setUp( ) , 以免在
每個測試方法中都創建新的雇員實例。 運行這個測試用例, 確認兩個測試都通過了。

11-3

import  unittest
class Employee ():
    """收集雇傭者信息"""
    def __init__(self,first,last,salary):
        ‘‘‘存儲個人信息在屬性中‘‘‘
        self.first = first
        self.last = last
        self.salary = salary
    def give_raise(self):
        ‘‘‘年薪增加量的方法‘‘‘
        self.salary = 5000
        return self.salary
class TEmployee (unittest. TestCase) :
    ‘‘‘創建一個測試Employee實例‘‘‘
    def setUp(self):
        self.first = wang
        self.last = shi
        self.salary = int(300)
    def test_give_default_raise(self):
        """測試員工薪水是否是默認值300"""
        self.assertEqual(self.Employee.salary,300)
        def test_give_custom_raise(self):
            """測試薪水增長值是否是5000"""
            self.assertEqual(self.Employee.give_raise(), 5000)
    unittest.main()

結果:

技術分享圖片

Python編程:從入門到實踐——【作業】——第十一章(測試代碼)