|
|
|
|
|
单元测试框架unittest
- unittest是python自带的自动化测试框架
- 主要内容:
- TestCase(测试用例)
- TestSuite(测试套件, 把多个TestCase集成到一个测试TestSuite)
- TestRunner(执行测试用例)
- TestLoader(自动从代码中加载多个测试用例)
- Fixture(UnitTest特性)
1. TestSuite
- 多条测试用例集合在一起, 就是一个TestSuite
- 使用
- import 导入 unittest
- import 导入其他的包含测试用例的py文件
- 实例化unittest.TestSuite类的对象
- suite = unittest.TestSuite() (suite为TestSuite实例化的名称)
- 调用对象的addTest方法
- 用unittest.makesuite一次导入一个类中的所有测试方法
- 添加扩展: suite.addTest(unittest.makeSuite(ClassName)) (搜索指定ClassName内test开头的方法并添加到测试控件中)
2. TextTestRunner
- 作用: 用来执行测试用例和测试套件的
- 使用方法
- 先实例化TextTestRunner的对象 runner = unittest.TextTestRunner()
- 调用对象的run方法 runner.run(suite)
3. TestLoader
- 用来加载TestCase到TestSuite中, 即加载满足条件的测试用例, 并把测试用例封装成测试套件
- 使用unittest.TestLoader, 通过该类下面的discover()方法自动搜索指定目录下指定开头的py文件, 并将查找到的测试用例组装到测试套件
- suiite = unittest.TestLoader().discover('.', pattern='test*.py')
4. Fixture
- 可以在测试用例执行之前自动调用指定函数, 在测试用例之后自动调用个指定函数
- 控制级别
- 方发级
- 每个方法执行之前和之后都自动调用函数
- 在TestCase所在的class中定义方法
- def setUp(self) 当测试用例前, 自动被调用
- def setDown(self) 当测试用例执行时, 自动被调用
- 如果一个TestCase中有多个测试用例, 娜美setUphe setDown就会被执行多次
- 类级
- 不管类中有多少方法, 一个类执行前后都自动调用函数
- 类的fixture一定是类方法
- @classmethod def setUpclass(cls)类开始是自动调用的方法
- @classmethod def setDown(cls) 类结束的时候自动调用的方法
- 模块级
- 不管模块中有多少类, 一个模块执行前后都自动调用函数
- def setUpModule() 在py文件开始的时候自动调用
- def setDownModule() 在py文件结束的时候自动调用
5. 断言
1. unittest断言
- assertEqual(参数1, 参数2)
- 如果参数1和参数2的值相等, 则断言成功, 否则断言失败
- 两个参数, 一个存放实际结果, 一个存放预期结果
6. 参数化
- 多个测试用例代码相同, 只是测试数据不同, 预期结果不同, 可以吧多个测试用例参数化技术合并为一个测试用例
- 使用方法:
- 第一步:导入from parameterized import parameterized
- 第二步: 在方法上面使用@parameterized.expand()修饰方法
- expand()里面是一个列表
- 列表里面放多个元组, 每个元组的成员就代表调用方法使用的实参
- 列表中有几个元组, 方法就会自动被调用几次
7. 跳过
- 可以通过@unittest.skip跳过指定的方法或者函数
8. texttestrunner测试报告
- 第一步: 用open, w方式打开测试报告文件
- 第二步: 实例化TectTestRunner对象
- 第三步: 调用对象的run方法执行测试套件
- 第四步: 关闭open打开的文件
9. HTML测试报告
- 把文件HTMLRunner.py拷贝到项目目录下
- 在代码中导入模块from HTMLRunner import HTMLRunner
- 调用HTMLTestRunner(steam=file, title="我的第一个测试报告")
- 第一个参数是用open打开的文件, 打开的文件拓展名一定是.html
- open打开文件的时候, wb, 不用指定字符集
- 调用runner对象的run方法执行测试套件
- 关闭open打开的文件
|
|