最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Python教程unittest.TestCase 测试类

XAMPP案例 admin 686浏览 0评论

写在前面:产生过高的估计,就会失去分寸感。

测试类

各种断言方法

Python在unittest.TestCase类中提供了很多断言方法,用于检查条件是否被满足。以下六种常用的断言方法可核实返回的值(平时用到的可能不止这些,如果有需要可以上网查资料,后面也会进行补充),只要在unittest.TestCase类中使用即可:

方法 用途
assertEqual(a,b) 核实a == b
assertNotEqual(a,b) 核实a != b
assertTrue(x) 核实x为True
assertFalse(x) 核实x为False
assertIn(item,list) 核实item在list中
assertNotIn(item,list) 核实item不在list中


一个要测试的类

dy3Python

这个类首先存储了指定的调查问题,并创建了一个空列表,用于存储答案;然后包含了打印调查问题的方法以及在答案列表中添加新答案的方法;最后包含了将存储在列表中的答案打印出来的方法。

要创建这个类的实例,只需要提供一个问题即可,然后就可使用show_question()来显示其中的问题,并使用store_response()来存储答案,并使用show_results()来显示调查结果。为了验证这个类能够正确工作,可以编写一个使用它的程序:

dy03Python

说明:程序首先定义了一个问题,并使用这个问题创建了一个对象,然后调用show_question()来显示这个问题,并提示用户输入答案,收到每个答案的同时将其存储起来,直到用户输入q退出,然后调用show_result()来打印调查结果。

Anosurvey类可用于进行简单的匿名调查,但是如果将其放在模块中进行改进:让每位用户输入多个答案,编写一个方法,只列出不同的答案,并指出每个答案出现了多少次,再编写一个类,用于管理非匿名调查等。这些修改是存在风险的,可能会影响该类的当前行为。如果要确认开发新模块没有破坏已有行为,就可以编写针对此类的测试。

 

测试Anosurvey类

通过使用assertIn()方法来核实用户的答案是否包含在答案列表中:

dy003Python

说明:首先导入模块unittest以及要测试的类AnoSurvey,将测试用例命名为TestAnoSurvey,让它继承unittest.TestCase。第一个测试方法验证调查问题的单个答案被存储后,会包含在调查结果列表中;要测试类的行为,就需要创建其实例,通过使用一个问题创建一个名为my_survey的实例,然后使用方法store_response()存储了单个答案English,接下来检查English是否包含在列表my_survey.responses中,以核实这个答案是否被存储。
 dy0003Python

同样三个答案也能够测试通过,使用列表存储答案,并对其中每个答案都调用store_response(),然后使用循环确认答案是否包含在my_survey.responses中。

 

方法setUp()

在前面的示例中,每个测试方法中都创建了一个AnoSurvey实例,并在每个方法中都创建了答案。Unittest.TestCase类包含方法setUp(),让我们只需创建一次这些对象,就可以在其他测试方法中使用这些被创建的对象了。因为Python会先运行TestCase类中包含的setUp()方法,然后再运行以test_打头的方法。

dy00003Python

说明:方法setUp()做了两件事:创建一个调查对象,创建一个答案列表。存储这两个内容的变量名包含前缀self(也就是存储在属性中),因此可在这个类的任何地方使用,这样在其他方法内就不需要再去创建调查对象和答案列表了。第一个方法核实self.responses中的第一个答案self.response[0]被正确存储;第二个方法核实self.responses中的三个答案都被正确存储。在setUp方法中创建一系列实例并设置他们的属性,就可以在测试方法中直接使用这些实例。

注意:运行测试用例时,每完成一个单元测试,Python都打印一个字符:测试通过打印一个句点;测试引发错误打印一个E;测试导致断言失败打印一个F。可通过观察这些结果判断有多少个测试通过了。

转载请注明:XAMPP中文组官网 » Python教程unittest.TestCase 测试类

您必须 登录 才能发表评论!