unittest是python的内置模块,支持自动化测试,测试用例间可共享setUp(测试前的初始化)以及测试后的清理工作terDown,可以将测试用例合并为集合执行,然后输出测试报告 1 基本概念
- TestCase:所有测试用例的基类
- TestLoad:加载测试用例,返回TestSuite(测试套件)
- TestSuite:创建测试套件
- TextTestRunner:运行测试用例
- TextTestResult:测试结果(包含 运行多少,错误多少,失败多少)
- import语句引入unittest模块;
- 创建测试用例类,继承TestCase;
- 在setUp()方法中进行测试前的初始化工作,并在tearDown()方法中执行测试后的清除工作,setUp()和tearDown()都是TestCase类中定义的方法,每个测试用例都会执行一遍(setUpClass(),和tearDownClass(),必须使用@classmethod 装饰器, 所有case运行之前只运行一次)
- 测试用例的名字必须以test开头,小写以_下划线分割;
- 一个测试用例只测试一个方面,测试目的和测试内容应很明确。通过调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符;
- 调用unittest.main()启动自测,main()方法使用TestLoader类来搜索所有包含在该模块中的测试方法,并自动执行它们。
- 构建测试集合
- 脚本自测unittest.main()
if __name__ == "__main__": unittest.main()
-
使用addTest()构建测试用例的方法:
if __name__ == "__main__": suiteTest = unittest.TestSuite() #创建Testsuite对象 suiteTest.addTest(MyTestCase("testCase1")) #将用例加入到Testsuite suiteTest.addTest(MyTestCase("testCase2")) #将用例加入到Testsuite
-
使用unittest.TestLoader()构建测试用例的几种方法:
- loadTestsFromTestCase(testCaseClass):testCaseClass必须是TestCase的子类(或孙类也行)
- loadTestsFromModule(module, pattern=None):test case所在的module
- discover(start_dir,pattern='test*py',top level dir=None):找到指定目录下所有测试模块,并可递归查到子目录下的测试模块,只有匹配到文件名才能被加载。
注意:unittest使用discover加载层级目录时,首先需要注意,存放case的子目录需为python package,即存在__init__.py文件,否则拉取不到子目录下的caseif __name__ == "__main__": testsuite = unittest.Testloader().discover('.') unittest.TextTestRunner(verbosity=2).run(testsuite)
标签:__,模块,框架,PyUint,unittest,测试用例,测试,main From: https://www.cnblogs.com/learning9/p/17189085.html