PyUint测试框架:unittest

  unittest是python的内置模块,支持自动化测试,测试用例间可共享setUp(测试前的初始化)以及测试后的清理工作terDown,可以将测试用例合并为集合执行,然后输出测试报告
1 基本概念
  • TestCase:所有测试用例的基类
  • TestLoad:加载测试用例,返回TestSuite(测试套件)
  • TestSuite:创建测试套件
  • TextTestRunner:运行测试用例
  • TextTestResult:测试结果(包含 运行多少,错误多少,失败多少) 
2 使用方法:
  1. import语句引入unittest模块;
  2. 创建测试用例类,继承TestCase;
  3. 在setUp()方法中进行测试前的初始化工作,并在tearDown()方法中执行测试后的清除工作,setUp()和tearDown()都是TestCase类中定义的方法,每个测试用例都会执行一遍(setUpClass(),和tearDownClass(),必须使用@classmethod 装饰器,  所有case运行之前只运行一次)
  4. 测试用例的名字必须以test开头,小写以_下划线分割;
  5. 一个测试用例只测试一个方面,测试目的和测试内容应很明确。通过调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符;
  6. 调用unittest.main()启动自测,main()方法使用TestLoader类来搜索所有包含在该模块中的测试方法,并自动执行它们。
  7. 构建测试集合
  • 脚本自测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):找到指定目录下所有测试模块,并可递归查到子目录下的测试模块,只有匹配到文件名才能被加载。
    如果启动的不是顶层目录,那么顶层目录必须单独指定。
    ·start_dir:要测试的模块名或测试用例目录。
    ·patern=-test*.py:表示用例文件名的匹配原则。此处匹配文件名以“test”开头的“.py”类型的文件,
    星号“*”表示任意多个字符。
    ·top_level_dir=None:测试模块的顶层目录,如果没有顶层目录,默认为None。
     
    eg:使用unittest.Testloader().discover('.')在当前目录下寻找所有符合条件的测试用例组成集合
    "." 代表当前目录
    if __name__ == "__main__":
        testsuite = unittest.Testloader().discover('.')
        unittest.TextTestRunner(verbosity=2).run(testsuite)
    注意:unittest使用discover加载层级目录时,首先需要注意,存放case的子目录需为python package,即存在__init__.py文件,否则拉取不到子目录下的case

 

posted @ 2023-03-07 18:17  张小丹  阅读(24)  评论(0编辑  收藏  举报