- 测试用例-案例覆盖方式
- 语句覆盖
- 判断覆盖
- 条件覆盖
- 路径覆盖
- Unittest组件
- test cases
- test suites
- test fixtures
- test runner
- Unittest编写规范
- 测试模块要先引入import unittest
- 测试类必须继承unittest.TestCase
- 测试方法必须以 “test_“开头
- 模块名字和类名没有特殊要求
- Unittest方法函数
- setUpClass()-- setUp()前执行
- setup()-- 提供准备工作的操作,比如资源初始化,登录等操作
- tearDown()-- 对资源清空,断开数据库的执行
- tearDownClass()-- tearDown()后执行
- assert-- 断言assertEqul()
- *****每个case执行前后,都会执行一次setUp()和tearDown(),但setUpClass()和tearDownClass()只执行一次
- @unittest.skip()-- 跳过此条case[用例],括号内可设置条件语句
- Unittest测试执行
- 方法一、unittest.main()-- 执行所有case
- 方法二、加入容器执行--unittest.TestSuite() ,suite[测试套件]
- suite=unittest.TestSuite()
- suite.addTest(TestMethod("test_01"))
- suite.addTest(TestMethod("test_02"))
- unittest.TextTestRunner().run(suite)
- 方法三、同时执行多个类--unittest.TestLoader().loadTestsFromTestCase(TestCase01)
- suite1=unittest.TestLoader().loadTestsFromTestCase(TestCase01)
- suite2=unittest.TestLoader().loadTestsFromTestCase(TestCase02)
- suite=unittest.TestSuite([suite1,suite2])
- unittest.TextTestRunner(verbosity=2).run(suite)
- 方法四、执行路径下所有测试案例,匹配某个路径下所有的以test开头的py文件,执行这些文件下的所有测试用例。
- test_dir="./test_case"
- discover=uinittest.defaultTestLoaderdiscover(test_dir,pattern="test*.py")
- discover可以一次调用多个脚本
- test_dir被测试脚本的路径
- pattern脚本名称匹配规则
- unittest.TextTestRunner().run(discover)
- Unittest执行过程
- 首先写好TestCase
- 然后由TestLoader加载TestCase到TestSuite
- 然后由TextTestRunner来运行TestSuite
- 运行的结果保存在TextTestResult中
- 整个过程集成在unittest.main()中
- TestCase-->>TestLoader-->>TestSuite-->>TextTestResult
- Unittest结果TextTestResult如何处理--HTMLTestRunner_PY3
- 结合htmltestrunner生成带日志的测试报告
- report_title="测试用例执行报告"
- desc="用于展示修改样式后的HTMLTestRunner"
- report_file="./Report.html"-- 测试报告文件src
- suite=unittest.TestSuite()
- suite.addTest(TestMethod("test_01"))
- suite.addTest(TestMethod("test_02"))
- with open(report_file,'wb') as report:
- runner=HTMLTestRunner(stream=report,title=report_title,description=desc)
- runner.run(testsuite)
|