文章目录
1、UnitTest框架
UnitTest是Python自带的一个单元测试框架,用它来做单元测试。
UnitTest核心要素
1、TestCase
2、TestSuite
3、TestRunner
4、TestLoader
5、Fixture
1、TestCast
说明:TestCase 就是测试用例
1.1 案例
定义一个实现加法操作的函数,并对该函数进行测试
1.2 定义测试用例
1、导包:import unittest
2、 定义测试类:新建测试类必须继承unittest.TestCase
3、定义测试方法:测试方法名称命名必须以test开头
1.3 执行测试用例
方式一:
使用pycharm在代码上点击鼠标右键,选择使用UnitTest运行
方式二:
调用 unittest.main() 来运行
2、TestSuite
说明:(测试套件)多条测试用例集合在一起,就是一个TestSuite
使用:
- 实例化: suite = unittest.TestSuite()
(suite:为TestSuite实例化的名称)
2.添加用例:
方法一:suite.addTest(ClassName(“MethodName”))
(ClassName:为类名;MethodName:为方法名)
方法二suite.addTest(unittest.makeSuite(ClassName))
(搜索指定ClassName内test开头的方法并添加到测试套件中)
提示:TestSuite需要配合TestRunner才能被执行
3、TextTestRunner(测试用例执行)
说明:TextTestRunner是用来执行测试用例和测试套件的
使用:
1. 实例化:runner = unittest.TextTestRunner()
2. 执行: runner.run(suite) # suite:为测试套件名称
4、TestLoader
说明:
1.用来加载TestCase到TestSuite中,即加载满足条件的测试用例,并把测试用例封装成测试套件。
2.使用unittest.TestLoader,通过该类下面的discover()方法自动搜索指定目录下指定开头的.py文件,并将查找到的测试用例组装到测试套件。
用法:
suite = unittest.TestLoader().discover(‘文件夹路径’, pattern="*.py")
说明:
自动搜索指定目录下指定开头的.py文件,并将查找到的测试用例组装到测试套件
pattern:为查找的.py文件的格式,默认为’test*.py’
也可以使用unittest.defaultTestLoader 代替 unittest.TestLoader()
运行:
runner = unittest.TextTestRunner()
runner.run(suite)
代码演示:
4.TestLoader与TestSuite区别
1.TestSuite需要手动添加测试用例,可以添加测试类(makeSuite(类名)),也可以添加测试类中某个测试方法(类名+方法名),更加灵活;
- TestLoader搜索指定目录下指定开头.py文件,并添加测试类中的所有的测试方法,不能指定添加测试方法,多个文件要运行时,更加简单方便
5.Fixture
说明:Fixture是一个概述,对一个测试用例环境的初始化和销毁就是一个Fixture
Fixture控制级别:
- 方法级别
- 类级别
- 模块级别
1.1方法级别
使用:
- 初始化(前置处理):
def setUp(self) --> 首先自动执行 - 销毁(后置处理):
def tearDown(self) --> 最后自动执行 - 运行于测试方法的始末,即:运行一次测试方法就会运行一次setUp和tearDown
1.2类级别
使用:
- 初始化(前置处理):
@classmethod
def setUpClass(cls): --> 首先自动执行 - 销毁(后置处理):
@classmethod
def tearDownClass(cls): --> 最后自动执行 - 运行于测试类的始末,即:每个测试类只会运行一次setUpClass和tearDownClass
1.3 模块级别
使用:
- 初始化(前置处理):
def setUpModule() --> 首先自动执行 - 销毁(后置处理):
def tearDownModule() --> 最后自动执行 - 运行于整个模块的始末,即:整个模块只会运行一次setUpModule和tearDownModule
2、UnitTest 断言
说明:让程序代替人为判断测试程序执行结果是否符合预期结果的过程
常用的断言方法:
1.assertEqual(预期结果, 实际结果)
2…assertIn(预期结果, 实际结果) --> 实际结果包含预期结果
3、自带报告生成操作图
4、po设计模式
· PO 的定义: 典型的 UI 自动化代码实现过程的一种设计模式
· 核心内容: 以页面为单位, 对页面的元素进行方法封装和抽取
·实现步骤:
1、根据页面创建页面对应的 page 文件
2、根据 PO 的分层思想创建对应的 3 个类
①页面名称Page(对象库层)
1、需要浏览器驱动对象
2、封装元素定位方法
②页面名称Handle (操作层)
1、对象库层封装的元素定位对象
2、封装元素操作方法
③页面名称Proxy (业务层)
1、操作层封装的元素操作对象
2、封装测试业务方法
3、在测试用例文件当中, 实例化业务执行对象, 并调用业务执行方法, 实现测试流程
代码演示-搜索页面:
代码演示-测试用例:
公共方法类
代码实现: