Python学习笔记之测试函数

匿名 (未验证) 提交于 2019-12-02 22:51:30

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

1 def city_country(city, country): 2     city_name = city + ', ' + country 3     return city_name.title()

test_city_country()

 1 import unittest  2 from city_function import city_country  3   4 class CityTestCase(unittest.TestCase):  5     """测试city_function.py"""  6   7     def test_city_country(self):  8         city_name = city_country('santiago', 'chile')  9         self.assertEqual(city_name, 'Santiago, Chile') 10  11 unittest.main()


修改上述函数,将形参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 city_country(city, country, population=''):     if population:         city_name = city + ', ' + country + ' - population ' + str(population)     else:         city_name = city + ', ' + country     return city_name.title()

test_cities.py

 1 import unittest  2 from city_function import city_country  3   4 class CityTestCase(unittest.TestCase):  5     """测试city_function.py"""  6   7     def test_city_country(self):  8         city_name = city_country('santiago', 'chile')  9         self.assertEqual(city_name, 'Santiago, Chile') 10  11     def test_city_country_population(self): 12         city_name = city_country('santiago', 'chile', population=5000000) 13         self.assertEqual(city_name, "Santiago, Chile - Population 5000000") 14  15 unittest.main()

assertEqual()方法的作用是将要测试函数的执行结果返回的值与预期的结果对比,如果相等则Ok通过而assertNotEqual()与assertEqual()是相反的,若是不相等则Ok通过想了解更多unittest类的功能请查阅Python标准库
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!