# -*- coding:utf-8 -*-
#li hongliang 2020年09月30日
#第11章 测试代码
#11.1 测试函数
#11.1.1 单元测试和测试用例
#Python标准库中的模块unittest提供了代码测试工具。单元测试用于核实函数的某个方面没
#有问题;测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。
#良好的测试用例考虑到了函数可能收到的各种输入,包含针对所有这些情形的测试。全覆盖式测
#试用例包含一整套单元测试,涵盖了各种可能的函数使用方式。对于大型项目,要实现全覆盖可
#能很难。通常,最初只要针对代码的重要行为编写测试即可,等项目被广泛使用时再考虑全覆盖。
#11.1.2 可通过的测试
#创建测试用例的语法需要一段时间才能习惯,但测试用例创建后,再添加针对函数的单元测
#试就很简单了。要为函数编写测试用例,可先导入模块unittest以及要测试的函数,再创建一个
#继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。
#我们使用了unittest类最有用的功能之一:一个断言方法。断言方法用来核实得到的结果是否与期望的结果一致.
#。为检查是否确实如此,我们调用unittest的方法assertEqual(),并向它传递formatted_name和'Janis Joplin'。代码行self.assertEqual(formatted_name, 'Janis Joplin')的意思是说:“将formatted_name的值同字符串'Janis Joplin'进行比较,如果它们相等,就万事大吉,如果它们不相等,跟我说一声!”
# 代码行unittest.main()让Python运行这个文件中的测试。
#每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
#为让get_formatted_name()在没有提供中间名时依然可行,可给实参middle_name指定一个默认值——空字符串,并将其移到形参列表的末尾:
# 动手试一试
#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章 测试代码 ——11.1 测试函数
最新推荐文章于 2021-10-05 19:33:38 发布