1. 程式人生 > >第6周作業 #高階程式設計技術

第6周作業 #高階程式設計技術

第11章

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 get_formatted_city(city, country):
    """Generate a neatly formatted full name."""
    full_name = city + ', ' + country
    return full_name.title()

test_cities.py

import unittest
from city_functions import get_formatted_city

class NamesTestCase(unittest.TestCase)
:
def test_formatted_city_name(self): formatted_name = get_formatted_city('santiago', 'chile') self.assertEqual(formatted_name, 'Santiago, Chile') unittest.main()

執行結果

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
[Finished in 0.2s]

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 get_formatted_city(city, country, population=''):
    """Generate a neatly formatted full name."""
    if population:
        full_name = city + ', ' + country + ' - population ' + str(population)
    else:
        full_name = city + ', ' + country
    return full_name.title()

test_cities.py

import unittest
from city_functions import get_formatted_city
class NamesTestCase(unittest.TestCase):
    def test_formatted_city_name_1(self):
        formatted_name = get_formatted_city('santiago', 'chile')
        self.assertEqual(formatted_name, 'Santiago, Chile')

    def test_formatted_city_name_2(self):
        formatted_name = get_formatted_city('santiago', 'chile', 5000000)
        self.assertEqual(formatted_name, 'Santiago, Chile - Population 5000000')

unittest.main()

執行結果

..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK
[Finished in 0.2s]